2016-03-11 40 views
2

工作,我有這樣的配置,我的NginxNginx的CORS不爲POST

server { 
    listen  8080; 

add_header Access-Control-Allow-Origin *; 
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
add_header 'Access-Control-Allow-Headers' 'Content-Type'; 
} 

現在我有我的web應用程序,它確實GETPOSTGET它工作正常,但如果我這樣做阿賈克斯POST我得到這個錯誤

XMLHttpRequest無法加載'URL'。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此原產地'Origin'不被允許訪問。該響應具有HTTP狀態代碼404.

如果我做'GET'請求,我可以在我的回覆中看到這個。

Access-Control-Allow-Headers:Content-Type 
Access-Control-Allow-Methods:GET, POST, OPTIONS 
Access-Control-Allow-Origin:* 

但是,如果我發佈帖子,我沒有看到任何。

回答

2

我有同樣的問題,並通過在我的add_header指令中添加關鍵字always來解決問題。如上所述由documentation

add_header:將指定的字段來提供的響應代碼等於200,201,204,206,301,302,303,304,或307 [響應報頭。 ..]

如果指定了always參數(1.7.5),則無論響應代碼如何,都會添加標題字段。

發生了什麼事是,如果沒有always,我GET請求被退回200,從而取得預期的頭,而我POST漸漸400,從而無需標題和因此引發CORS錯誤。

+0

爲我工作,我懷疑我的問題是關於請求返回4xx代碼(這裏預期的行爲)被解釋爲CORS錯誤,但無法找到更多的信息。 – polku