博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSONP跨域以及之前的历史
阅读量:6700 次
发布时间:2019-06-25

本文共 1000 字,大约阅读时间需要 3 分钟。

同源政策

最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"

  • 协议相同
  • 域名相同
  • 端口相同

如果我们想拿到Cookie

同源

设置document.domain

不同源

片段识别符(fragment identifier)

window.name

跨文档通信API(Cross-document messaging)

数据库

能长期存放据就是数据库

1.0

读-写-改数据库的数据

使用from表单,from表单一旦提交一定会刷新页面

我们的操作需要刷新页面,返回,再刷新

2.0

使用iframe结合from表单 把from的target写成iframe的name

少一步刷新页面返回,直接刷新就好了

3.0

  • 用img请求

使用js按钮点击添加事件,创建图片标签,创建图片地址,图片加载成功取到数据库的数字操作html,加载失败弹出失败提示。

后台判断段请求成功,设置请求头为图片(response.setHeader()说明它是什么东西),修改数据库,返回图片地址,http200状态吗。

失败,返回状态吗400。

缺点:不能post

  • 使用scrip请求

同上,还要把script写入body中,图片不需要。添加在页面中script标签会执行,先执行添加的script,再执行onload等事件监听,所以我们在script中写上成功或者失败,再监听script的onload之后remove掉这个script(a.currenttarget)

  • 这种技术叫做 SRJ - Server Rendered JavaScript

4.0

jsonp

jsonp=script+callback=json+padding

由于同源政策,不同源的两个网页无法跨域,而script可以发出GET请求,我们就利用把服务器写成调用一个本地随机函数,然后我们就可以拿到数据了。具体原理如下:

  1. 请求方写script ,把script的src指向服务器,同时传递查询参数?callback
  2. 服务器根据查询参数,返回一个js脚本,内容是调用查询参数传过来的函数名,并传入需要的数据。
  3. 随后浏览器执行script脚本,
  4. 请求方就得到了他要的数据进行下一把操作,还有把无用的随机函数以及script删除掉

tips:约定

  1. 本地函数名->随机数
  2. callbackname->callback

转载地址:http://njwlo.baihongyu.com/

你可能感兴趣的文章
扯扯所学的编程语言
查看>>
POJ 3358 Period of an Infinite Binary Expansion
查看>>
PHP——上传头像(2)
查看>>
Silverlight企业应用框架设计【六】自定义系统菜单(使用自己的DataForm)
查看>>
在线购物系统权限模块
查看>>
Asp.net和C# 函数方法 (2)【转载】
查看>>
wget用法详解
查看>>
session监听
查看>>
android 拍照注意问题
查看>>
WIN8系统中 任务管理器 性能栏 显示CPU利用率(已暂停)怎么回事?
查看>>
whu oj 1551 Pairs (莫队算法)
查看>>
iOS:iOS开发系列–打造自己的“美图秀秀”(中)
查看>>
程序猿的还有一出路:大数据project师
查看>>
FIREDAC直连ORACLE数据库
查看>>
Gac代码库分析(3)智能指针
查看>>
【转】MFC 字体LOGFONT
查看>>
iOS 图片填充 UIImageView
查看>>
Android 动态加载 (一) 态加载机制 案例一
查看>>
口唇口腔紅肿案
查看>>
ZeroMQ接口函数之 :zmq_ctx_get - 得到环境上下文的属性
查看>>