国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

跨域問題的根本解決方案CORS

Joonas / 1156人閱讀

摘要:介紹關于跨域問題有很多的解決方案,這里我們總結一下目前最通用最強大的解決方案。的工作組推薦了一種新的機制,即跨域資源共享,簡稱。預檢請求用的請求方法是,表示這個請求是用來詢問的。頭信息里面,關鍵字段是,表示請求來自哪個源。

介紹

關于跨域問題有很多的解決方案,這里我們總結一下目前最通用最強大的解決方案:CORS。

W3C 的 Web 工作組推薦了一種新的機制,即跨域資源共享(Cross-origin Resource Sharing),簡稱CORS。其實這個機制就是實現了跨站訪問控制,使得安全地進行跨站數據傳輸成為可能。

跨源資源共享標準( cross-origin sharing standard) 使得以下場景可以使用跨站 HTTP 請求:

使用 XMLHttpRequest 或 Fetch發起跨站 HTTP 請求。

Web 字體 (CSS 中通過 @font-face 使用跨站字體資源),因此,網站就可以發布 TrueType 字體資源,并只允許已授權網站進行跨站調用。

WebGL 貼圖

使用drawImage繪制

Images/video 畫面到canvas.

樣式表(使用 CSSOM)

Scripts (for unmuted exceptions)

CORS分為簡單請求復雜請求,處理方法也是有不同的,所以我們分別總結。

簡單請求

什么是簡單請求呢?同時滿足以下兩個條件,就是簡單請求:

請求是下列之一:
HEAD
GET
POST

HTTP的頭信息不超出以下幾種字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三個值application/x-www-form-urlencoded、multipart/form-data、text/plain

實現方法非常簡單,只需要把服務器的響應報文里的Access-Control-Allow-Origin設置為*或者包含由 Origin指明的站點。

Access-Control-Allow-OriginHTTP響應報文中的一個字段,OriginHTTP請求報文中的以一個字段,如果不清楚這兩個字段的話,可以自行查閱關于HTTP報文的知識,比如HTTP | MDN。

復雜請求

如果不是簡單請求,那就是復雜請求,比如請求的方法是PUT或者DELETE,比如Content-Type字段的類型是application/json,比如設置了自定義頭信息。

復雜請求就是比簡單請求多了個預檢請求(preflight)而已。

預檢請求就是瀏覽器先詢問服務器,當前網頁所在的域名是否在服務器的許可名單之中,以及可以使用哪些HTTP動詞和頭信息字段。只有得到肯定答復,瀏覽器才會發出正式的XMLHttpRequest請求,否則就報錯。

預檢請求用的請求方法是OPTIONS,表示這個請求是用來詢問的。頭信息里面,關鍵字段是Origin,表示請求來自哪個源。除了Origin字段,還有兩個字段非常重要:Access-Control-Request-MethodAccess-Control-Request-Headers,分別表示允許的請求方法和請求頭。

舉一個具體的例子:

現在,我們有一個頁面向服務器發送了一個POST請求,并且我們自己定義了一個請求頭字段My-HEADER,這時候瀏覽器就會首先發送一個OPTION請求來做預檢請求,請求頭里有以下字段:

Access-Control-Request-Method: POST
Access-Control-Request-Headers: My-HEADER

如果預檢請求成功的話,響應頭里的內容如下:

Access-Control-Allow-Origin: http://example.com //表明服務器允許http://example.com的請求
Access-Control-Allow-Methods: POST, GET, OPTIONS //表明服務器可以接受POST, GET和 OPTIONS的請求方法
Access-Control-Allow-Headers: My-HEADER //傳遞一個可接受的自定義請求頭列表
Access-Control-Max-Age: 3000000 //告訴瀏覽器,本次預檢請求的響應結果有效時間是多久
總結

以上就是CORS方法解決跨域問題的流程,CORS支持所有類型的HTTP請求,是目前跨域問題的根本解決方案。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107485.html

相關文章

  • 一篇文章搞明白CORS跨域

    摘要:跨域實在是面試官一個人的利器。首先,什么是是一個標準,全稱是跨域資源共享。它的值是一個布爾值,表示是否允許發送。設為,即表示服務器明確許可,可以包含在請求中,一起發給服務器。 面試問到數據交互的時候,經常會問跨域如何處理。大部分人都會回答JSONP,然后面試官緊接著就會問:JSONP缺點是什么啊?這個時候坑就來了,如果面試者說它支持GET方式,然后面試官就會追問,那如果POST方式發送...

    tanglijun 評論0 收藏0
  • 前端跨域解決方案

    摘要:但是如果是一級域名相同,二級及以上域名不同的網頁可以通過設置來共享。設置有兩種方式前端腳本中設置服務器接口設置時指定所屬的域名為一級域名。服務器檢查過預檢請求頭之后,確認允許跨域請求,就可以做出回應。 一、跨域問題產生的原因 根本原因是由于瀏覽器的同源政策。 1.1.同源政策 同源政策由網景公司(Netscape)1995年引入瀏覽器。目前所有瀏覽器都實行這個政策。所謂同源是指三個相同...

    wayneli 評論0 收藏0
  • AJAX 跨域解析

    摘要:這里只講解了兩種常見的跨域方式,因為存在一些弊端,因此推薦使用等方式來解決跨域問題。 一、什么是 AJAX 跨域問題 同源策略規定,AJAX 請求(XMLHttpRequest)只能發給同源的網址,否則就會出錯。所謂的同源策略是指 3 個相同:協議相同、域名相同、端口相同。 比如 http://www.example.com/index.html 這個網址,協議是http ,域名是 w...

    tinylcy 評論0 收藏0
  • 淺談前端跨域

    摘要:一什么是跨域跨域簡單的理解就是同源策略的限制。同源策略限制的內容請求不能正常進行。同源策略默認地址是網頁的本身。 一、什么是跨域? 跨域簡單的理解就是JavaScript同源策略的限制。是出于安全的考慮,a.com域名下的js不能操作b.com或者c.com域名下的對象。 當協議、子域名、主域名、端口號中任意一個不相同時,都算作不同域。不同域之間相互請求資源,就算叫跨域。 一個正常...

    dunizb 評論0 收藏0
  • 跨域理解

    摘要:什么是跨域個人一句話解釋如果與不同源,那么頁面不能獲取頁面的資源。所以用同源策略來限制跨域是必須的。它是標準,是跨源請求的根本解決方法。 本文整理了一些有關跨域的基礎知識和細節問題。 什么是跨域 個人一句話解釋:如果 url A 與 url B 不同源,那么頁面A不能獲取頁面B的資源。這里有兩個關鍵詞:url 和 同源,瀏覽器的同源策略就是針對兩個url,它們滿足以下三個條件,才是同源...

    zhongmeizhi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<