我試圖從我的angular.js應用程序向我的服務器發送一些HTTP請求,但是我需要解決一些cors錯誤。來自angular的HTTP請求將使用方法OPTIONS而不是POST發送
HTTP請求是等於該樣品:
functions.test = function(foo, bar) {
return $http({
method: 'POST',
url: api_endpoint + 'test',
headers: {
'foo': 'value',
'content-type': 'application/json'
},
data: {
bar:'value'
}
});
};
在第一次嘗試端與一些CORS錯誤。所以,我實現了以下行我的PHP服務器腳本:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding, X-Auth-Token, content-type');
的第一個錯誤,現在被消除。
現在開發者控制檯(在Chrome)告訴我以下錯誤:
angular.js:12011個OPTIONS http://localhost:8000/test(匿名 功能)
423ef03a:1的XMLHttpRequest不能加載 http://localhost:8000/test。預檢響應具有無效的HTTP 狀態碼400
和網絡請求看起來像我預期的(狀態400還預計):
我無法想象如何解決(以及如何理解)爲什麼請求將作爲OPTIONS在本地主機上發送,並作爲POST發送到遠程服務器。有沒有解決方法如何解決這個奇怪的事情?
嘗試在標頭中添加'Accept':'application/json' –
OPTIONS是由瀏覽器發送的預檢請求,因爲POST調用中設置了自定義標頭;這是正常的。 我認爲問題是與這些標題的內容。 –
問題在於對預檢('OPTIONS')請求的響應不成功,即HTTP 400.這就是爲什麼真實(跟隨)請求失敗。您必須確保對預檢請求的響應是有效的。 –