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. html5 - 這個(gè)代碼顯示功能如何實(shí)現(xiàn)?2. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題3. java - 關(guān)于File的問(wèn)題?4. java - instance method中 static后的<K>是什么意思?5. docker - 如何修改運(yùn)行中容器的配置6. 錯(cuò)誤:java.lang.NoSuchMethodError:org.objectweb.asm.ClassWriter。<init>(I)V7. python3.x - python連oanda的模擬交易api獲取json問(wèn)題第五問(wèn)8. javascript - QWebEngineView 如何爬 angular 的動(dòng)態(tài)數(shù)據(jù)?9. docker-machine添加一個(gè)已有的docker主機(jī)問(wèn)題10. 為什么我ping不通我的docker容器呢???
