国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 如何解決跨越問題

如何解決跨越問題

來源:千鋒教育
發布人:wjy
時間: 2022-09-07 16:55:47 1662540947

(1)CORS

下面是MDN對于CORS的定義:

跨域資源共享(CORS) 是一種機制,它使用額外的 HTTP 頭來告訴瀏覽器  讓運行在一個 origin (domain)上的Web應用被準許訪問來自不同源服務器上的指定的資源。當一個資源從與該資源本身所在的服務器不同的域、協議或端口請求一個資源時,資源會發起一個跨域HTTP 請求。

CORS需要瀏覽器和服務器同時支持,整個CORS過程都是瀏覽器完成的,無需用戶參與。因此實現CORS的關鍵就是服務器,只要服務器實現了CORS請求,就可以跨源通信了。

瀏覽器將CORS分為簡單請求非簡單請求:

簡單請求不會觸發CORS預檢請求。若該請求滿足以下兩個條件,就可以看作是簡單請求:

1)請求方法是以下三種方法之一:HEADGETPOST2)HTTP的頭信息不超出以下幾種字段:AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type:只限于三個值application/x-www-form-urlencoded、multipart/form-data、text/plain若不滿足以上條件,就屬于非簡單請求了。

(1)簡單請求過程:

對于簡單請求,瀏覽器會直接發出CORS請求,它會在請求的頭信息中增加一個Orign字段,該字段用來說明本次請求來自哪個源(協議+端口+域名),服務器會根據這個值來決定是否同意這次請求。如果Orign指定的域名在許可范圍之內,服務器返回的響應就會多出以下信息頭:

如果Orign指定的域名不在許可范圍之內,服務器會返回一個正常的HTTP回應,瀏覽器發現沒有上面的Access-Control-Allow-Origin頭部信息,就知道出錯了。這個錯誤無法通過狀態碼識別,因為返回的狀態碼可能是200。

在簡單請求中,在服務器內,至少需要設置字段:Access-Control-Allow-Origin

(2)非簡單請求過程

非簡單請求是對服務器有特殊要求的請求,比如請求方法為DELETE或者PUT等。非簡單請求的CORS請求會在正式通信之前進行一次HTTP查詢請求,稱為預檢請求。

瀏覽器會詢問服務器,當前所在的網頁是否在服務器允許訪問的范圍內,以及可以使用哪些HTTP請求方式和頭信息字段,只有得到肯定的回復,才會進行正式的HTTP請求,否則就會報錯。

預檢請求使用的請求方法是OPTIONS,表示這個請求是來詢問的。他的頭信息中的關鍵字段是Orign,表示請求來自哪個源。除此之外,頭信息中還包括兩個字段:Access-Control-Request-Method:該字段是必須的,用來列出瀏覽器的CORS請求會用到哪些HTTP方法。

Access-Control-Request-Headers: 該字段是一個逗號分隔的字符串,指定瀏覽器CORS請求會額外發送的頭信息字段。服務器在收到瀏覽器的預檢請求之后,會根據頭信息的三個字段來進行判斷,如果返回的頭信息在中有Access-Control-Allow-Origin這個字段就是允許跨域請求,如果沒有,就是不同意這個預檢請求,就會報錯。

服務器回應的CORS的字段如下:

只要服務器通過了預檢請求,在以后每次的CORS請求都會自帶一個Origin頭信息字段。服務器的回應,也都會有一個Access-Control-Allow-Origin頭信息字段。

在非簡單請求中,至少需要設置以下字段:

減少OPTIONS請求次數:

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT