昨天在項目開發中,遇到一個奇怪的問題:
使用fetch發送一個請求,并指定請求的方式method
為 POST
代碼如下:
使用postman調試接口的時候是正常的,但是使用如上代碼發送請求的時候,卻遇到403錯誤,提示請求方式不允許:
從上圖中可以看到,請求方式上赫然寫著OPTIONS
, 這是什么意思?
W3C規范中指出,網絡請求分為簡單請求和復雜請求:
簡單請求:get和部分post,post時content-type屬于application/x-www-form-urlencoded,multipart/form-data,text/plain中的一種復雜請求:簡單請求之外的請求復雜請求發出之前,就會出現一次options請求。
第一次OPTIONS 空數據請求,為了獲取是否允許跨域,第二次才是帶數據請求。在這種情況下,即便是服務器允許程序跨域訪問,若不支持 options
請求,請求也會死掉。
對應的處理方案就是:在服務端添加OPTIONS
請求支持,并做好跨域處理
OPTIONS請求方法的主要用途有兩個:
1、獲取服務器支持的HTTP請求方法;也是黑客經常使用的方法。
2、用來檢查服務器的性能。例如:Ajax進行跨域請求時的預檢,需要向另外一個域名的資源發送一個HTTP OPTIONS請求頭,用以判斷實際發送的請求是否安全。
for more infomation
http://stackoverflow.com/questions/17333013/jquery-ajax-post-request-throws-405-method-not-allowed-on-restful-wcf
http://blog.csdn.net/gavin_luo/article/details/44855627
|
新聞熱點
疑難解答