jquery url检测遇到的jquery跨域问题及JSONP的使用

 

jsonp的ibm上的资料:javascript

使用 JSONP 实现跨域通讯,第 1 部分: 结 合 JSONP 和 jQuery 快速构建强大的html

 

跨域限制的缘由java

 跨域问题存在实际上源于浏览器的同源策略(same origin policy),简单讲,同源就是要求域名,协议,端口三者都一致;而同源策略就是指页面上的脚本不能访问非同源的资源(包括HTTP响应和Cookie);jquery

    不少人会想到一个很熟悉的东西:document.domainjson

    同 源策略有点放松的就是:b.a.com上的页面没法经过a.com的同源验证,可是设置b.a.com页面的document.domain 属性为a.com,就能够经过浏览器对a.com的同源检测;可是,document.domain只容许设置成更上级的域名,而不是 其它域名,例如c.com就不行; 提到这里不少人都会想到多级域 名下共享Cookie的路子就是把Cooki设置成上级域名;在Web2.0的时代,这种本质上同域跨级解决方案远远不能知足咱们跨域的需求;跨域

 

JQUERY的解决办法浏览器

浏览器会进行同源检查,这致使了跨域 问题,然而这个跨域检查还有一个例外那就是HTML的<Script>标记;咱们常常使用<Script>的src属性,脚本静 态资源放在独立域名下或者来自其它站点的时候这里是一个url;这个url响应的结果能够有不少种,比 如JSON,返回的Json值成为<Script>标签的src属性值.这种属性值变化并不会引发页面的影响.按照惯例,浏览器在URL的查询字符串中提 供一个参数,这个参数将做为结果的前缀一块儿返回到浏览器;dom

 

<script type="text/javascript" src="http://domain2.com/getjson?jsonp=parseResponse"> </script> 响应值:parseResponse({"Name": "Cheeso", "Rank": 7}) 注意这里的响应值parseResponse({"Name": "Cheeso", "Rank": 7}),JSONP中URL传入的参数其实是个回调函数,网站返回的也不是纯JSON数据,若是只有数据,返回后浏览器不会有任何动做。函数

撇开JQuery,若是本身写JSONP调用,<script src="http://domain2.com/getjson?callback=load"></script>,这时候服返回的数据是相似 load({jsonp数据});(也就是说返回的那个调用函数随着你传入的 callback 而改变。) 这样的javascript代码,调用页面上的load函数,同时把数据传进去。jsonp

做者: Sjolzy | Google+
地址: http://sjolzy.cn/jquery-jquery-url-encountered-in-cross-domain-detection-of-problems-and-the-use-of-JSONP.html--EOF--

相关文章
相关标签/搜索