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 類(lèi)型的 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. mysql - 記得以前在哪里看過(guò)一個(gè)估算時(shí)間的網(wǎng)站2. python中merge后文件莫名變得非常大3. 希望講講異常處理4. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效5. docker start -a dockername 老是卡住,什么情況?6. javascript - 關(guān)于<a>元素與<input>元素的JS事件運(yùn)行問(wèn)題7. java - 為什么第一個(gè)線程已經(jīng)釋放了鎖,第二個(gè)線程卻不行?8. css3 - [CSS] 動(dòng)畫(huà)效果 3D翻轉(zhuǎn)bug9. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變10. 大家好,我想請(qǐng)問(wèn)一下怎么做搜索欄能夠搜索到自己網(wǎng)站的內(nèi)容。
