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--

相關文章
相關標籤/搜索