【ajax跨域】原因原理解决
2015-09-22 11:16
281 查看
1.安全,跨域cookie iframe
2.很简单,就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的。当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如:
<script src="http://www.example.net/api?param1=1¶m2=2"></script>
并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。
第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如:
callback({"name":"hax","gender":"Male"})
这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。
补充:“历史遗迹”的意思就是,如果在今天重新设计的话,也许就不会允许这样简单的跨域了嘿,比如可能像XHR一样按照CORS规范要求服务器发送特定的http头。
3.JSONP是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。这里有篇文章简单描述JSON跟JSONP的区别以及实战,自己去看吧
CORS跨域:暂时没有用过,需要再学习
2.很简单,就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的。当需要通讯时,本站脚本创建一个<script>元素,地址指向第三方的API网址,形如:
<script src="http://www.example.net/api?param1=1¶m2=2"></script>
并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。
第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如:
callback({"name":"hax","gender":"Male"})
这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。
补充:“历史遗迹”的意思就是,如果在今天重新设计的话,也许就不会允许这样简单的跨域了嘿,比如可能像XHR一样按照CORS规范要求服务器发送特定的http头。
3.JSONP是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。这里有篇文章简单描述JSON跟JSONP的区别以及实战,自己去看吧
CORS跨域:暂时没有用过,需要再学习
相关文章推荐
- php类获取静态变量值以及调用
- 热更新-Android与Lua相互通信
- XMLItergration.java
- java.io.IOException: Stream closed
- Android App性能信息获取方法
- iOS 9中使用手Q支付SDK须知
- 关于Ubuntu 9.1 Server 自带安装的Tomcat + Java 命令
- 欢迎使用CSDN-markdown编辑器
- 错误名称:EntityCommandExecutionException
- Java项目引入第三方Jar包
- 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市
- SyntaxError: Non-ASCII character '\xe5'
- 10 条真心有趣的 Linux 命令
- java四种线程池的使用,觉得写得不错,值得借鉴
- “拒绝了对对象数据库的 EXECUTE 权限”之解决
- Gradle project sync failed Error:Connection reset问题
- ThreadLocal
- Xcode7适配问题
- Xcode7 使用NSURLSession发送HTTP请求报错
- angular $watch