javascript - 請(qǐng)問(wèn)為什么CORS中需要對(duì)部分請(qǐng)求進(jìn)行預(yù)檢
問(wèn)題描述
CORS的請(qǐng)求分為簡(jiǎn)單請(qǐng)求和非簡(jiǎn)單請(qǐng)求,對(duì)于非簡(jiǎn)單請(qǐng)求,CORS定義需要對(duì)這些非簡(jiǎn)單請(qǐng)求發(fā)起一次預(yù)檢,也即是發(fā)起一個(gè)option請(qǐng)求,待確認(rèn)服務(wù)器允許跨域后才會(huì)重新發(fā)送原先的非簡(jiǎn)單請(qǐng)求,所以我想問(wèn)下為什么需要進(jìn)行預(yù)檢?
這里有一個(gè)stack上面的回答,我看的不是太明白,有人愿意翻譯或者簡(jiǎn)單概括下?
http://stackoverflow.com/ques...
問(wèn)題解答
回答1:你要去人家里拿東西,總得經(jīng)主人同意吧
回答2:跨域是瀏覽器的同源策略搞出來(lái)的事情,預(yù)請(qǐng)求是瀏覽器行為,拿著當(dāng)前的域名去問(wèn)服務(wù)端能不能通過(guò)。
回答3:最常用的兩個(gè)get 默認(rèn)不存在跨域,意思是你允許 get 就要有被別人拿走的預(yù)期,jsonp 就是利用這點(diǎn);post 存在跨域, 因?yàn)榘匆馑紩?huì)對(duì)資源產(chǎn)生影響,必須先檢驗(yàn)。
回答4:對(duì)那些可能對(duì)服務(wù)器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請(qǐng)求方法(特別是 GET 以外的 HTTP 請(qǐng)求,或者搭配某些 MIME 類型的 POST 請(qǐng)求),瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個(gè)預(yù)檢請(qǐng)求(preflight request),從而獲知服務(wù)端是否允許該跨域請(qǐng)求。服務(wù)器確認(rèn)允許之后,才發(fā)起實(shí)際的 HTTP 請(qǐng)求。在預(yù)檢請(qǐng)求的返回中,服務(wù)器端也可以通知客戶端,是否需要攜帶身份憑證(包括 Cookies 和 HTTP 認(rèn)證相關(guān)數(shù)據(jù))。
———— HTTP訪問(wèn)控制(CORS)
相關(guān)文章:
1. android - NavigationView 的側(cè)滑菜單中如何保存新增項(xiàng)(通過(guò)程序添加)2. 老師 我是一個(gè)沒(méi)有學(xué)過(guò)php語(yǔ)言的準(zhǔn)畢業(yè)生 我希望您能幫我一下3. php7.3.4中怎么開(kāi)啟pdo驅(qū)動(dòng)4. 關(guān)于thinkphp 5.1中,ajax提交數(shù)據(jù)url的格式寫(xiě)法,加花括號(hào)就出錯(cuò),請(qǐng)老師指點(diǎn)5. http://run.php.cn/在線PHP程序運(yùn)行結(jié)果不正確6. tp5 不同控制器中的變量調(diào)用問(wèn)題7. Thinkphp5.1報(bào)錯(cuò)不支持Redis8. ueditor上傳服務(wù)器提示后端配置項(xiàng)沒(méi)有正常加載,求助!!!!!9. 提示語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤: unexpected ’abstract’ (T_ABSTRACT)10. 這段代碼既不提示錯(cuò)誤也看不到結(jié)果,請(qǐng)老師明示錯(cuò)在哪里,謝謝!
