http協議 跨域問題

2021-09-30 18:10:22 字數 2190 閱讀 8962

具有相同協議,網域名稱和埠的頁面,則具有相同的,即它們是來自同乙個服務的資源.

如,對"進行同源檢測:

url結果原因

成功成功

失敗不同協議 ( https和http )

失敗不同埠 ( 81和80)

失敗不同網域名稱 ( news和store )

注:1、埠和協議的不同,只能通過後台來解決 

2、網域名稱和實際ip位址屬於跨域,如:localhost和127.0.0.1雖然都指向本機,但也屬於跨域

瀏覽器的同源策略限制了從同乙個源載入的資源 (文件或指令碼等) 如何與來自另乙個源的資源進行互動,它是乙個用於隔離潛在惡意檔案的重要安全機制。

同源策略控制了不同源之間的互動,當瀏覽器從乙個源的網頁去請求另乙個源的資源時,即瀏覽器在做跨服務的資源訪問時,就會出現跨域問題.

注:1、同源策略及跨域問題只是瀏覽器設計的一種安全機制,對於其他工具如 curl 則完全沒有同源及跨域的概念

2、瀏覽器在跨域請求資源時,實際的請求會被傳送到被請求的服務端,響應也會被接收,只是如果不做跨域處理時,返回的響應不會被瀏覽器解析,同時瀏覽器會丟擲跨域受限的錯誤

若在來自"源a (的乙個頁面中要訪問"源b (中的資源,則"源b"可以通過修改其 response 中 header 的  "access-control-allow-origin"欄位來允許來自"源a"的跨域請求.瀏覽器檢測到"access-control-allow-origin"字段,則會根據結果對響應做解析.

access-control-allow-origin : *                    表示源b接收來自其它任何源的跨域請求

access-control-allow-origin : 源a (如:           表示源b只接收來自源a的跨域請求

cors的預請求

在跨域時,並不是所用的方法都會被允許,對於非預設允許方法,需要經過近一步驗證後才會得到跨域允許,這就涉及到cors的預請求.

在跨域時預設允許的method:

在跨域時預設允許的content-type:

跨域時其它的限制:

cors預請求 (prefligt請求) 就是瀏覽器在在發生請求時,會預先自動發出乙個options請求來檢測本次請求中涉及到的一些內容(如method, content-type 等)是否被伺服器接受。乙個options請求一般會攜帶下面兩個與跨域相關相關的頭:

access-control-request-method:  本次預請求的請求方法。

access-control-request-headers:本次請求所攜帶的自定義首部字段

access-control-allow-origin:  伺服器允許的跨域請求源

access-control-allow-methods:  伺服器允許的請求方法

access-control-allow-headers:  伺服器允許的自定義的請求首部字段

通過預請求後,瀏覽器就會發生正式的資料請求。整個請求過程其實是發生了兩次請求:乙個預請求,以及預請求通過後的實際資料請求。

在上面的兩次請求中,預檢請求只是乙個檢查的過程,它不會攜帶任何請求的引數;預檢通過後的請求才會真正的攜帶請求引數與伺服器進行資料通訊。

若伺服器對預請求沒有任何響應,那麼瀏覽器不知道伺服器是否支援跨域訪問,就而不會傳送後續的實際請求;或者伺服器不支援當前的origin跨域訪問也不會傳送後續請求。

jsonp(json with padding:填充式json),應用json的一種新方法, 

json、jsonp的區別: 

1、json返回的是一串資料、jsonp返回的是指令碼**(包含乙個函式呼叫) 

2、jsonp 只支援get請求、不支援post請求 

jsonp的原理很簡單,就是動態的創造script標籤,然後利用script的src 不受同源策略約束來跨域獲取資料。(link,script,image標籤不受瀏覽器的同源策略約束)

參考:cors預檢請求詳談

什麼是跨域?如何解決跨域問題?

不要再問我跨域的問題了

HTTP訪問控制(跨域問題)

跨域資源共享 cors 使用額外的 http 頭來告訴瀏覽器,讓執行在乙個origin域上的web應用被准許訪問來自不同源伺服器上的指定的資源 瀏覽器本地快取也會受到跨域限制 跨域指不同的網域名稱,協議或埠 整個cors通訊過程,都是瀏覽器自動完成,不需要使用者參與 如果請求的origin的值不在指...

通過cors協議解決跨域問題

跨域 瀏覽器從乙個網域名稱的網頁去請求另乙個網域名稱的資源時,網域名稱 埠 協議任一不同,都是跨域 cors協議 h5中的新特性 cross origin resource sharing 跨域資源共享 通過它,我們的開發者 主要指後端開發者 可以決定資源是否能被跨域訪問。cors是乙個w3c標準,...

HTTP之跨域請求

http協議本身是沒有跨域請求的設定的,跨域請求的限制是瀏覽器為了安全考慮加上去的。實際上,瀏覽器對於http請求是直接傳送給server 瀏覽器提供了2種方式來突破跨域請求的限制,在sever返回的response head中新增access control allow origin 瀏覽器不限制...