国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

瀏覽器跨域請求的機制:CORS

系統 瀏覽器
CORS 真正的形態是非簡單請求,它不會立即發送真正的請求,而是額外發送 OPTION 方法的預檢請求,讓服務端來決定是否允許即將發送的請求。

大家好,我是前端西瓜哥。

因為同源策略(Cross-Origin Policy)的存在,瀏覽器在一個域名下發送另一個域名的 Ajax 請求時,返回的數據通常會被瀏覽器攔截,讓開發者無法拿到返回結果。

這里說 “通常”,是因為瀏覽器額外提供了一種可以正常使用 Ajax 請求非同源域名接口的機制,也就是我們接下來要說的 跨源資源共享(CORS, Cross-Origin Resource Sharing)。

CORS 會在上圖中的第三步中發揮作用。

簡單來說,就是請求 b.com 的 HTTP 響應頭字段中的一些頭字段符合一定規則,返回數據就不會被瀏覽器攔截,請求者能正常獲得返回數據。

簡單請求和非簡單請求是瀏覽器發出跨域請求的 兩種不同的請求方式,我們來了解一下。

簡單請求

發送的請求符合下面的所有情況,就屬于簡單請求。

  • 請求方法為其中一種:GET、POST、HEAD。
  • 除了瀏覽器自動設置的字段(比如 Connection),僅能人為設置請求頭字段 Accept、Accept-Language、Content-Language、Content-Type 這個集合內的值。
  • 請求頭字段 Content-Type 為其中一種:text/plain、 multipart/form-data、application/x-www-form-urlencoded。

(還有一些更多的瑣碎的細節,比如腳本設置、特定瀏覽器相關的,這里不展開,具體可以查閱官方文檔)

可能你會對這個規則的設計很感興趣,其實它是為了 向后兼容,兼容一些之前沒有 Ajax 時就可以發送的跨域請求,比如 form 元素能夠產生的請求。

點擊表單下的提交按鈕,頁面跳轉然后發送請求。這種寫法非常古老了,因為會自動跳轉頁面且不能拿到返回數據執行下一步的操作,實際開發基本上不會使用了

<form action="https://b.com/api/v1/book/get" method="get">
<input type="text" name="name" value="clean code" />
<input type="submit" value="提交"/>
</form>

CORS 機制下,HTTP 響應頭字段需要使用頭字段

Access-Control-Allow-Origin,將它的值設置為:

  • *:任意域名都允許跨域請求。
  • <origin>:具體的域名,這里不能提供多個域名,只能提供一個域名。這也是可以理解的,通過強制要求防止黑客得到服務端設置的白名單域名。我們不應該透露太多信息。服務端要實現跨域白名單功能,就需要根據請求頭字段中動態返回該字段的值。

另外,如果請求中攜帶了身份信息,也就是 Cookie,不能使用 *,而需要指定具體域名。

這樣設置后,我們就能正常地拿到其他域名接口返回的數據了。

下面我們再看看非簡單請求。

非簡單請求

不符合簡單請求規定條件的請求,就是 非簡單請求。

對于簡單請求,為了兼容,瀏覽器會直接將請求發出去。但非簡單請求沒有兼容的需要,所以瀏覽器給它加上了嚴格的復雜機制。

在發出真正的請求前,瀏覽器會先發一個 OPTION 請求來探探路,這個請求稱為 預檢請求(preflight)。

瀏覽器發送的請求,會額外帶下以下請求頭字段:

  • Access-Control-Request-Method:該字段告知服務端接下來要發起真正跨域請求使用的 HTTP 方法。
  • Access-Control-Request-Headers:該字段告知服務端,當前請求使用的不符合簡單請求規則的頭字段,比如使用 JSON 結構來作為數據的格式,預檢請求就會帶上上 Access-Control-Request-Headers: content-type

下面是服務端的回合。

服務端拿到了足夠多的請求方信息,然后就可以考慮是否允許跨域了。

服務端的響應頭字段可以攜帶上以下字段:

  • Access-Control-Allow-Origin:用法同上一節的簡單請求說明。
  • Access-Control-Allow-Methods:可以發送的請求方法。如 POST, GET, OPTIONS。
  • Access-Control-Allow-Headers:可以使用的頭字段,如 X-PINGOTHER, Content-Type
  • Access-Control-Max-Age: 86400:緩存的有效時長,單位為秒,設置后,在這段時間內都可以免除預檢請求的發送。瀏覽器自身預設了一個最大緩存時間,防止返回的緩存時間過長(比如好幾年)導致的安全問題。

瀏覽器拿到這些字段后,就會進行對比,如果不符合規則,那么真正的跨域請求將不會發送。如果不符合,接下來就會發送真正的跨域請求。

需要注意的是,真正的請求和簡單請求一樣,需要提供Access-Control-Allow-Origin 頭字段,否則依舊拿不到返回數據。

結尾

CORS 真正的形態是非簡單請求,它不會立即發送真正的請求,而是額外發送 OPTION 方法的預檢請求,讓服務端來決定是否允許即將發送的請求。

簡單請求是向后兼容的妥協產物,它其實直接向目標發起了真正請求,只是瀏覽器可能會將返回的數據攔截掉,如果響應頭沒有設置正確的

Access-Control-Allow-Origin 的話。



責任編輯:姜華 來源: 今日頭條
相關推薦

2020-08-31 19:20:33

瀏覽器CORS跨域

2023-12-20 14:42:59

2015-04-24 10:37:40

Web安全瀏覽器跨域訪問

2021-06-10 18:11:02

Cors跨域Web開發Cors

2023-12-12 09:45:16

前端瀏覽器

2024-08-23 09:00:18

開發跨域請求

2024-11-21 10:38:10

2019-04-10 10:32:16

CORSNginx反向代理

2021-06-15 07:32:59

Cookie和Sess實現跨域

2022-03-21 07:35:34

處理方式跨域

2017-04-26 14:15:35

瀏覽器緩存機制

2014-08-19 10:36:02

AngularCORS

2025-01-06 08:33:10

2017-05-15 13:40:20

瀏覽器http緩存機制

2021-06-25 09:04:39

Cors跨域JSONP vs CO

2010-09-14 14:18:09

CSS跨瀏覽器開發

2020-12-20 18:00:04

跨域請求開發CORS

2021-06-06 13:05:15

前端跨域CORS

2021-07-22 09:55:28

瀏覽器前端緩存

2020-11-13 11:15:17

數據加密攻擊模型瀏覽器密碼
點贊
收藏

51CTO技術棧公眾號

91精品尤物| 99国产在线视频| 国产精品996| 日韩影视在线| 国产高潮呻吟久久久| 精品一区二区三区四区在线| 精品午夜久久福利影院| 裤袜国产欧美精品一区| 国产九九九九九| 久久久久这里只有精品| 一级中文字幕一区二区| 999国产精品视频| 成人三级黄色免费网站| 日本一区二区久久精品| 亚洲欧美在线免费| 久久综合五月天婷婷伊人| 国偷自产视频一区二区久| 理论视频在线观看| 国产日韩欧美日韩| 欧美色图在线观看| 免费观看日韩电影| 成人在线视频www| 亚洲欧美中文另类| 免费一区二区三区视频导航| 亚洲国内精品在线| 999久久久| 一区二区三区入口| 亚洲成人av观看| 亚洲国产精品91| av在线综合网| 国产主播一区二区三区| 国产精品三级在线观看| 国产日韩视频| 在线成人超碰| 国产高清亚洲一区| 亚洲国产精品字幕| 国产欧美日韩免费| 在线看片地址| 成人欧美亚洲| 欧美二区在线视频| 欧美日韩免费高清| 国产精品久久久久久久av大片| 欧美精品一区男女天堂| 久久噜噜亚洲综合| 影音先锋亚洲一区| 综合伊人久久| 热色播在线视频| 欧美舌奴丨vk视频| 午夜精品成人av| 在线免费观看黄色网址| 午夜在线视频| 毛片免费在线观看| 中日韩高清电影网| 北条麻妃在线一区二区免费播放| 一呦二呦三呦国产精品| 激情久久久久久| 99精品国产福利在线观看免费| 中日韩男男gay无套| 蜜桃一区二区三区四区| 亚洲一区二区伦理| 午夜影院日韩| 国模大尺度一区二区三区| 欧美女优在线视频| 久久大胆人体视频| 欧美综合在线视频观看| 欧美电影一区| av在线播放成人| 日韩高清在线不卡| 麻豆国产欧美日韩综合精品二区| 国产欧美日韩一级| 这里只有精品在线| 欧美一级在线免费| 91精品综合久久久久久| 亚洲精品中文字幕女同| 国内外免费激情视频| 欧美极品欧美精品欧美视频 | gogogo高清在线观看一区二区| 国产在线观看免费麻豆| 国产精品视频分类| 清纯唯美一区二区三区| 国产欧美高清在线| 国产女同一区二区| 日韩电影中文字幕在线观看| 亚洲乱码国产乱码精品精98午夜 | 亚洲人成免费电影| 亚洲制服欧美中文字幕中文字幕| 蜜桃一区二区三区在线观看| 欧美久久综合网| 四虎国产精品成人免费影视| 日本暖暖在线视频| 神马午夜dy888| 国产97在线 | 亚洲| 欧美日韩国产综合视频在线| 日韩av成人在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 在线视频一区二区三| 国产精品日产欧美久久久久| 国产乱淫av一区二区三区| 在线观看视频日韩| 精品高清久久| 99精品中文字幕在线不卡| 成人私拍视频| 日本色护士高潮视频在线观看| 日韩av成人| 电影天堂最新网址| 久久人妻精品白浆国产| 亚洲成人动漫在线| 日韩videos| 极品尤物一区二区三区| 国产精品一区二区女厕厕| 久久久人成影片一区二区三区| 亚洲网在线观看| 精品国产乱码久久久久久影片| 在线观看不卡一区| 亚洲一级电影视频| ...xxx性欧美| 国产午夜精品一区二区| 不卡的av电影| 国产黄色91视频| 激情文学综合丁香| 麻豆91精品视频| 日韩黄色免费网站| 久久精品人人| 免费看的黄色欧美网站| 中文精品视频| 性色一区二区三区| 性久久久久久| 视频一区欧美日韩| 97福利电影| 成人免费av资源| 麻豆精品在线观看| 久久一区亚洲| 一本久道综合久久精品| 91精品国产成人观看| 国产精品美女久久久久久不卡| 伊人久久影院| 久久中文字幕一区二区| gogo大尺度成人免费视频| 中文在线最新版地址| 色是在线视频| 呦呦在线视频| 久久毛片亚洲| 69久久99精品久久久久婷婷| 欧美一区二区三区在线观看| 成人高清视频观看www| 国产xxxxx在线观看| 久久综合久久综合亚洲| 日韩一区在线播放| 日韩一区不卡| 亚洲国产片色| 色天堂在线视频| 欧美激情网站| 久久久在线视频| 四虎8848精品成人免费网站| 91久久久在线| 日韩美女毛片| 欧美一区二区三区精品| 绯色av一区| 久久网站热最新地址| 国产精品久久久久久久久久久久久| 影院在线观看全集免费观看| 亚洲精品欧美专区| 久久五月天婷婷| 亚洲人成精品久久久| 久久久成人av| 韩国精品视频在线观看| 色综合一区二区三区| 91婷婷韩国| 国产女人aaa级久久久级| 婷婷丁香六月天| 亚洲成人av资源| 国产911在线观看| 精品综合免费视频观看| 日本久久高清视频| 91视视频在线直接观看在线看网页在线看| 久久久久中文字幕| 海角社区69精品视频| 成人午夜在线视频一区| 黄色成人在线观看网站| 国产手机视频精品| 调教一区二区| 欧美色爱综合网| 日本亚洲精品| 日韩欧美在线影院| 超碰97免费在线| 欧美俄罗斯乱妇| 欧美精品系列| 国产精品一区而去| 成人久久综合| 国产精品午夜国产小视频| 欧美午夜不卡影院在线观看完整版免费| 国产91九色视频| 亚洲综合成人在线视频| 欧美日韩综合在线| 最近2019中文字幕在线高清| 国产第一区电影| 一区二区三区免费看| 91福利电影| 91超碰国产在线| 奇米狠狠一区二区三区|