昨天在項目開發(fā)中,遇到一個奇怪的問題:
使用fetch發(fā)送一個請求,并指定請求的方式method 為 POST代碼如下:
使用postman調(diào)試接口的時候是正常的,但是使用如上代碼發(fā)送請求的時候,卻遇到403錯誤,提示請求方式不允許: 
從上圖中可以看到,請求方式上赫然寫著OPTIONS , 這是什么意思?
W3C規(guī)范中指出,網(wǎng)絡(luò)請求分為簡單請求和復(fù)雜請求:
簡單請求:get和部分post,post時content-type屬于application/x-www-form-urlencoded,multipart/form-data,text/plain中的一種復(fù)雜請求:簡單請求之外的請求復(fù)雜請求發(fā)出之前,就會出現(xiàn)一次options請求。
第一次OPTIONS 空數(shù)據(jù)請求,為了獲取是否允許跨域,第二次才是帶數(shù)據(jù)請求。在這種情況下,即便是服務(wù)器允許程序跨域訪問,若不支持 options請求,請求也會死掉。
對應(yīng)的處理方案就是:在服務(wù)端添加OPTIONS 請求支持,并做好跨域處理
OPTIONS請求方法的主要用途有兩個:
1、獲取服務(wù)器支持的HTTP請求方法;也是黑客經(jīng)常使用的方法。
2、用來檢查服務(wù)器的性能。例如:Ajax進行跨域請求時的預(yù)檢,需要向另外一個域名的資源發(fā)送一個HTTP OPTIONS請求頭,用以判斷實際發(fā)送的請求是否安全。
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
新聞熱點
疑難解答