js跨域請求

2022-06-21 00:00:19 字數 2672 閱讀 6380

js 跨域

為什麼會出現跨域。瀏覽器有同源策略,所謂同源是指:網域名稱、協議、埠相同。網上有很多介紹跨域的介紹,這裡不做詳細解析

解決跨域請求的方式有很多種:

當我們正常去請求乙個跨域的介面是會出現錯誤,如下**

/*

首先我們建立乙個api介面

*//*

我們建立的位址是 http://localhost:51355/home/getname?name=czklove

*//*

首先我們使用正常的請求api的方式請求以下這個介面

1. jsonp的方式,原生的利用script標籤 src 可以請求到任何資源, jquery 也提供了 jsonp的方式,jsonp的方式只支援get方式

/*

首先我們建立乙個api介面

*//*

我們建立的位址是 http://localhost:51355/home/getnametwo?name=czklove

*//*

我們使用jsonp的方式去請求以下這個介面

*//*

注,我是使用.net 去建立的介面,.net 建立的介面不能是直接返回json,那樣是獲取不到資料的

*//*

第一步我們建立乙個script標籤

*/window.onload = function

() function

callback(res)

/*.net 的方法

*//*

public string getnametwo (string name,string callback)

";return callback + "(" + json + ")";

}*/

/*jquery jsonp 的方式*/

window.onload = function

() });

}

2.使用postmessage跨域 實現跨域  h5新提出來的乙個api,支援ie8+,chrome,ff,  這種方式不太像是跨域請求資料的方式,而是跨頁面傳送資料

3.跨域資源共享 cors,目前主流的跨域解決方案 需要前後端配合,幾乎所有瀏覽器都支援該功能,ie瀏覽器不能低於ie10。ie8+:ie8/9需要使用xdomainrequest物件來支援cors。

只要配置好了,和同源的請求並沒有什麼區別,有區別也是瀏覽器去自動處理

cors ,分成兩種請求,一種是簡單請求,一種是非簡單請求

簡單請求要求

請求方式為head,post,get,

別的就都是複雜請求了,簡單請求和非簡單請求,瀏覽器處理的方式是不一樣的,

非簡單請求相對於簡單請求,瀏覽器會多一次預檢的功能,如果瀏覽器檢測大本次請求不是簡單請求,那麼就去瀏覽器上去拿三個資訊

access-control-allow-origin,access-control-allow-methods,access-control-allow-headers,分別是請求源,請求方式,請求頭部,

三個都符合要求那麼就能像瀏覽器傳送請求,就和正常的簡單請求一樣了

簡單請求,瀏覽器會自動在頭部加上origin資訊,如果不在服務的許可範圍之內,會被被xmlhttprequest的onerror**函式捕獲

如果在許可範圍之內就是正常返回資料,並且在頭部會加上幾個字段

access-control-allow-origin:// 表示可以接受的網域名稱

access-control-allow-credentials: true //是否傳送cookie

access-control-expose-headers: 欄位可選,頭部的一些基本資訊

4.使用**去實現跨域請求,經常用於node,或者後台去傳送請求,

5.跨域請求還幾種。這裡只介紹常用的幾種。

document.domain + iframe 跨域

window.name + iframe 跨域

location.hash + iframe 跨域

總結,常用的跨域因該是jsonp 和 cors,還有**請求。

jsonp無相容性問題,但是jsonp只能使用get方式,

cors是現在最經常使用的方式,需要請後端同學配合,簡單方便,配置好和正常請求一樣。

**,在開發階段用的比較多

postmessage.這個主要還是用在跨頁面傳送資料

文章參考位址  

JS跨域請求 Ajax跨域請求JSONP

前兩天被問到ajax跨域如何解決,還真被問住了,光知道有個什麼jsonp,迷迷糊糊的沒有說上來。抱著有問題必須解決的態度,我看了許多資料,原來如此。為何一直知道jsonp,但一直迷迷糊糊的不明白呢?網上那些介紹資料都寫的太複雜了!我是能多簡單就多簡單,爭取讓你十分鐘看完!ajax之所以需要 跨域 罪...

JS跨域請求 Ajax跨域請求JSONP

前兩天被問到ajax跨域如何解決,還真被問住了,光知道有個什麼jsonp,迷迷糊糊的沒有說上來。抱著有問題必須解決的態度,我看了許多資料,原來如此。為何一直知道jsonp,但一直迷迷糊糊的不明白呢?網上那些介紹資料都寫的太複雜了!我是能多簡單就多簡單,爭取讓你十分鐘看完!ajax之所以需要 跨域 罪...

學習筆記 js跨域請求

js跨域請求問題 1.通過jquery jsonp實現跨域請求,具體參考 2.對於返回非json格式資料的請求,通過上面的方法將無法實現跨域,例如返回xml資料,通過自己摸索和查閱相關資料可以通過後台傳送http請求實現。先新建乙個一般處理程式,在processrequest方法中呼叫如下方法來獲得...