博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSONP跨域
阅读量:5978 次
发布时间:2019-06-20

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

1.浏览器的同源策略

  • 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

2.一个源的定义 如果两个页面的协议,端口和域名都相同,则两个页面具有相同的源,这就是同源。 http://www.example.com/dir/page.html这个网址,协议是http://,域名是www.example.com,端口是80(默认端口可以省略)。它的同源情况如下。

  • http://www.example.com/dir2/other.html:同源
  • http://example.com/dir/other.html:不同源(域名不同)
  • http://v2.www.example.com/dir/other.html:不同源(域名不同)
  • http://www.example.com:81/dir/other.html:不同源(端口不同)

参考文章


同源政策规定,AJAX请求只能发给同源的网址,否则就报错。


JSONP实现跨域访问数据

JSONP(JSON with Padding)是JSON的一种“使用模式” 由于同源策略,一般来说位于 server1.example.com 的网页无法与不是server1.example.com的服务器沟通,而 HTML<script>元素是一个例外。

ajax请求受同源策略影响,不允许进行跨域请求

而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。

JSONP是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小。

JSONP的基本思想是,动态创建一个<script>元素,script元素发送请求不熟同源政策的限制,只能发送get请求。服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。

	复制代码

上面的代码通过动态创建添加script元素,向服务器发送请求,查询字符串必须有callback参数,用来指定回调函数的名字。

response.write(`${query.callback}.call(undefined,'success')`)复制代码

服务器收到这个请求以后,会将数据放在回调函数的参数位置返回。这时只要浏览器定义了对应的回调函数,该函数就会立即被调用。

转载于:https://juejin.im/post/5ad35d3b51882555745a25e6

你可能感兴趣的文章
【第一期】网站打开错误问题解决方法集合
查看>>
j2ee开发防范URL攻击是个重要话题
查看>>
RSync实现文件备份同步
查看>>
如何判断一个服务是否正在运行
查看>>
Lync 2013快速入门手册之三:组织Lync会议
查看>>
CMD 修改Host文件 BAT
查看>>
android幻灯片效果实现-Gallery
查看>>
批量有效地修改package名
查看>>
使用Dubbo服务出现java.io.IOException: invalid constant type: 18异常解决办法
查看>>
实现Instagram的Material Design概念设计
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>
Goldengate双向复制配置
查看>>
Oracle官方内部MAA教程
查看>>
DNS相关配置
查看>>
在使用 Windows Update 检查更新时,系统没有提供下载 Windows 7 SP1 的选项
查看>>
miniWindbg 功能
查看>>
mysql基于mysqlslap的压力测试
查看>>
CF772E Verifying Kingdom
查看>>
rename设计思想(Perl版)
查看>>