一、為什麼會需要ajax跨域,為什麼會出現跨域請求?
為保護使用者資訊保安,瀏覽器引入同源政策(same-origin policy),同源指的是什麼相同呢?
* 協議相同
* 網域名稱相同
* 埠號相同
當非同源時會:
* cookie localstorage 無法讀取
* dom無法獲取
* ajax請求無法傳送
所以,當ajax傳送給非同源的**時,就會跨域請求失敗。
二、跨域請求解決方法
1)jsonp 該方法簡單適用,老式瀏覽器也適用並且伺服器改動非常小。但是只能傳送get請求
原理:利用的屬性src跨域的特性。
伺服器接收到這個函式名後,拼接出該函式的呼叫,並且在引數中傳入需要傳遞給瀏覽器的資料
返回給瀏覽器後,瀏覽器將其作為js解析。
伺服器:
2)cors(cross-origin resource sharing)跨域資源共享,是ajax跨域請求解決的根本方法,可以傳送get和post請求
特點:目前幾乎所有的瀏覽器都支援cors,ie 10以上。cors的整個過程都由瀏覽器自動完成,前端無需做任何配置,和平時傳送ajax請求沒有差別。
所以,實現cors的關鍵在伺服器配置,只要伺服器實現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所在的頁面與請求的介面是在同乙個應用下面,那麼就不存在跨域的問題,它們是在同乙個域下面,例如這裡都在本...