一。引子
如果本地開啟html檔案,用的位址是本地的file:///d/a.html,而ajax請求的詩伺服器的位址,那麼就跨域了。
跨域請求預設是不可進行的。
域:協議名(http)+主機名(www.baidu.com)+埠號(80)。 三個都相同才是相同的域。
相同域請求不受限制,不同域之間不能互相請求。
跨域請求:不同域之間的訪問。
二。如何處理
1.json處理跨域請求
最常見的是jspnp。 平時寫在html頁面中的
想法:用去請求伺服器的js檔案來獲得需要的資料。伺服器端的資料總是在更新變動,所以伺服器端就有必要動態生成js檔案。
jsonp定義:伺服器端動態生成j:son檔案,吧客戶端需要的資料放在這個檔案裡面,讓客戶端通過標籤的src屬性來請求這個檔案。
**ps::不要混淆乙個東西 。json以非常簡單的方式來描述資料,是一種非常常用的資料傳輸格式;ajax通過xmlhttprequest物件獲取非本頁的內容;jsonp是為了解決客戶的跨域請求,由開發者想出來的一種解決方案,而後形成的一種非正式的傳輸協議。
2.jsonp的使用:
通過jsonp方式寫乙個跨域請求,就要定義乙個函式,並且用標籤去請求一次。可以進行封裝:
ajax.jsonp = function()else
//設定script標籤的src屬性
script.setattribute('src',url);
//把script標籤加入head,請求伺服器得到資料
}
2. **伺服器處理跨域請求
把前台客戶端ajax需要跨域請求的位址交由後台伺服器端,伺服器通過自己的抓取工具去請求相應的位址,然後把得到的資料返回給客戶端。
注意:nodegrass模組在node.js擴充套件模組中是沒有的,需要安裝。
3.基於標籤
4.cors
cors是w3c推出的一種新的機制,即跨院資源共享。這種機制允許瀏覽器向跨源伺服器發出xmlhttprequest請求,它基於瀏覽器的乙個內建機制,需要瀏覽器的支援。由於只是瀏覽器的支援,所以我們在使用cors處理跨域請求的時候,瀏覽器判斷這是乙個跨域請求,會自動幫我們做好相應的跨域請求配置,新增一些附加的頭資訊,而我們要做的僅僅是在伺服器端判斷是否允許這個域訪問。
Ajax跨域請求
一 什麼是跨域請求 網域名稱它由http 協議 www 子網域名稱 baidu 主網域名稱 以及8080 埠號 組成,當另乙個網域名稱與其中任意一項對應不等的話,那麼我們說兩個網域名稱就是跨域的。如的頁面上我們要請求資料到上去,那麼就說這種請求是跨域請求。二 為什麼要講跨域請求 因為在一般的請求條件...
Ajax 跨域請求
隨筆 71 文章 0 客戶端js 服務端 1 string callbackfunname context.request callbackparam 2 context.response.write callbackfunname ps 客戶端的jsonp引數是用來通過url傳參,傳遞jsonpc...
ajax跨域請求
通過xhr實現ajax通訊的乙個主要的限制,於跨域安全策略。在預設情況下,xhr物件只能訪問與包含它的頁面位於同乙個域中的資源。這樣可以防止一些惡意行為。所謂的域,可以理解成網域名稱,如果這個xhr所在的頁面與請求的介面是在同乙個應用下面,那麼就不存在跨域的問題,它們是在同乙個域下面,例如這裡都在本...