ajax 跨域請求

2022-09-13 21:21:23 字數 1180 閱讀 2865

jquery中ajax處理跨域的兩種解決方案

1、jsonp

jsonp(json with padding)是json的一種」使用模式」,可用於解決主流瀏覽器的跨域資料訪問的問題。

jsonp的原理是動態新增乙個標籤,而script標籤的src屬性是沒有跨域的限制的。這樣說來,這種跨域方式其實與ajax xmlhttprequest協議無關了。

實踐應用 -- 

ajax請求**:

上述**,發出的請求位址大概為:為隨機生成的字串,不用關心其值)

ajax傳送請求時,需要在客戶端註冊乙個callback(如:jsonpcallback), 然後把callback的名字(如:jquery111111)傳給伺服器。

注意:服務端得到callback的數值後,要用jquery111111(...)把將要輸出的json內容包括起來,此時,伺服器生成 json 資料才能被客戶端正確接收。

也就是說,介面返回的資料,需要拼接上callback的值,上面**,通過jsonp設定引數名,設定了jsonpcallback

那麼,介面需要接收jsonpcallback的值,並拼接上返回的資料,格式:

jsonpcallback+ "("+data+")"

2、cors(跨域資源共享

這個方案實現起來非常簡單,只需由伺服器傳送乙個響應標頭即可

response.setheader("access-control-allow-origin","

*") 

「*」號表示允許任何域向我們的服務端提交請求

也可以設定指定允許訪問的網域名稱,如網域名稱  

response.setheader("access-control-allow-origin","

") 如圖,在服務端設定了乙個響應標頭允許所有資源訪問之後,8968埠也能訪問到8112埠的介面了。

對比jsonp與cors

cors與jsonp相比,更為先進、方便和可靠。

jsonp只能實現get請求,而cors支援所有型別的http請求。

使用cors,開發者可以使用普通的xmlhttprequest發起請求和獲得資料,比起jsonp有更好的錯誤處理。

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所在的頁面與請求的介面是在同乙個應用下面,那麼就不存在跨域的問題,它們是在同乙個域下面,例如這裡都在本...