javascript - 請問為什么CORS中需要對部分請求進(jìn)行預(yù)檢
問題描述
CORS的請求分為簡單請求和非簡單請求,對于非簡單請求,CORS定義需要對這些非簡單請求發(fā)起一次預(yù)檢,也即是發(fā)起一個option請求,待確認(rèn)服務(wù)器允許跨域后才會重新發(fā)送原先的非簡單請求,所以我想問下為什么需要進(jìn)行預(yù)檢?
這里有一個stack上面的回答,我看的不是太明白,有人愿意翻譯或者簡單概括下?
http://stackoverflow.com/ques...
問題解答
回答1:你要去人家里拿東西,總得經(jīng)主人同意吧
回答2:跨域是瀏覽器的同源策略搞出來的事情,預(yù)請求是瀏覽器行為,拿著當(dāng)前的域名去問服務(wù)端能不能通過。
回答3:最常用的兩個get 默認(rèn)不存在跨域,意思是你允許 get 就要有被別人拿走的預(yù)期,jsonp 就是利用這點;post 存在跨域, 因為按意思會對資源產(chǎn)生影響,必須先檢驗。
回答4:對那些可能對服務(wù)器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個預(yù)檢請求(preflight request),從而獲知服務(wù)端是否允許該跨域請求。服務(wù)器確認(rèn)允許之后,才發(fā)起實際的 HTTP 請求。在預(yù)檢請求的返回中,服務(wù)器端也可以通知客戶端,是否需要攜帶身份憑證(包括 Cookies 和 HTTP 認(rèn)證相關(guān)數(shù)據(jù))。
———— HTTP訪問控制(CORS)
相關(guān)文章:
1. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項2. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫3. HTML 5輸入框只能輸入漢字、字母、數(shù)字、標(biāo)點符號?正則如何寫?4. javascript - 請教如何獲取百度貼吧新增的兩個加密參數(shù)5. gvim - 誰有vim里CSS的Indent文件, 能縮進(jìn)@media里面的6. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯誤7. PHP類屬性聲明?8. javascript - JS請求報錯:Unexpected token T in JSON at position 09. objective-c - ios 怎么實現(xiàn)微信聯(lián)系列表 最好是swift10. java - 安卓接入微信登錄,onCreate不會執(zhí)行
