JavaScript跨域问题之CORS方法与JSONP的对比
来源:互联网 发布:java 二分法排序代码 编辑:程序博客网 时间:2024/05/29 18:03
什么是跨域?
只要协议、域名、端口有任何一个不同,都会被当成不同的域。而JavaScript同源政策的限制,无法进行跨域调用
解决方法:
1.跨域资源共享(CORS):
定义了在访问跨域资源时,浏览器与服务器应该如何沟通。背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。
服务器对于CORS的支持,主要通过设置Access-Controll-Allow-Origin来进行。如果浏览器检测到相应的设置,就允许ajax进行跨域访问
2.通过jsonp跨域:
什么是jsonp?相信很多人在刚接触jsonp时都会有这个疑问的。维基百科是这样定义的:JSONP(json with padding),是json的一种使用模式,可以让网页从别的网域要资料(即跨域)。
jsonp其实是由两部分组成的:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的json参数。利用的是script标签中src可以引用不同域上js文件的思想,进行跨域。
jsonp的优点:
它不像XHR对象实现ajax请求那样受到同源政策的限制,它的兼容性更好,XHR在进行ajax请求时,为了兼容IE,还需创建ActiveX对象。并且在请求完毕之后可以通过回调函数的方式将结果回传
jsonp的缺点:
它只支持get请求而不支持post等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用问题
CORS与JSONP对比:
CORS无疑更为先进,方便和可靠。
- jsonp只能实现get请求,而CORS支持所有类型的HTTP请求
- 使用CORS,开发者可以使用普通的XHR发起请求和获得数据,比起jsonp有更好的错误处理
- jsonp主要被老的浏览器支持,而绝大多数现代浏览器都已经支持CORS
- JavaScript跨域问题之CORS方法与JSONP的对比
- Node 解决跨域问题 JSONP与CORS
- 跨域请求问题 : jsonp & CORS
- JSONP与 CORS 跨域请求
- 跨域请求jsonp与cors
- 跨域请求 JSONP & CORS
- 跨域方法小结 CORS JSONP emmet window.name等
- [CORS:跨域资源共享] 同源策略与JSONP
- [CORS:跨域资源共享] 同源策略与JSONP
- [CORS:跨域资源共享] 同源策略与JSONP
- 跨域请求——jsonp与cors
- 跨域常用解决方案之JSONP和CORS
- 浅谈Ajax跨域的解决方案——CORS、JSONP
- 跨域请求的三种实现 jsonp,cors,IFame
- 解决跨域的两种方案JSONP和CORS
- 跨域通信--JSONP和CORS的node版
- JavaScript跨域访问CORS问题
- javascript 之 跨域技术 CORS
- springmvc笔记01
- 第11节--支持向量机(SVM)--线性不可分
- Oracle数据库Timestamp数据差值计算Sql语句
- 【2011集训队出题】happiness
- POJ2195 Going Home
- JavaScript跨域问题之CORS方法与JSONP的对比
- 【设计模式系列】--单例模式
- 消息队列设计
- 详细记录python的range()函数用法
- 数据库优化
- Android APK反编译 apktool使用教程
- Java学习笔记1
- 廖雪峰Python教程 学习笔记3 hello.py
- InputField 限制字数