JSONP跨域以及之前的历史

同源政策

最初,它的含义是指,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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值