axios中出现两次请求,OPTIONS请求和GET请求
在項目中發(fā)現(xiàn)ajax中出現(xiàn)兩次請求,OPTIONS請求和GET請求
查看到瀏覽器NetWork有兩次請求,請求url一樣:
查找原因是瀏覽器對簡單跨域請求和復(fù)雜跨域請求的處理區(qū)別。
XMLHttpRequest會遵守同源策略(same-origin policy). 也即腳本只能訪問相同協(xié)議/相同主機名/相同端口的資源, 如果要突破這個限制, 那就是所謂的跨域, 此時需要遵守CORS(Cross-Origin Resource Sharing)機制。
那么, 允許跨域, 不就是服務(wù)端設(shè)置Access-Control-Allow-Origin: *就可以了嗎? 普通的請求才是這樣子的, 除此之外, 還一種叫請求叫preflighted request。
preflighted request在發(fā)送真正的請求前, 會先發(fā)送一個方法為OPTIONS的預(yù)請求(preflight request), 用于試探服務(wù)端是否能接受真正的請求,如果options獲得的回應(yīng)是拒絕性質(zhì)的,比如404\403\500等http狀態(tài),就會停止post、put等請求的發(fā)出。
那么, 什么情況下請求會變成preflighted request呢??
1、請求方法不是GET/HEAD/POST
2、POST請求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
3、請求設(shè)置了自定義的header字段
轉(zhuǎn)載于:https://www.cnblogs.com/jason-hhc/p/11190474.html
總結(jié)
以上是生活随笔為你收集整理的axios中出现两次请求,OPTIONS请求和GET请求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# 读取写入excel单元格基本操作
- 下一篇: 循环链表实现两个多项式相加主要代码