2017-10-21 129 views
-1

我想發送帶有標頭的請求到我的Laravel 5.3 API,使用Laravel護照進行身份驗證。返回頭:我不能發送http請求與標題laravel api角4

405(不允許的方法)
迴應預檢要求 未通過訪問控制檢查:沒有「訪問控制允許來源」 頭出現在所請求的資源。原因 'http://localhost:4200'因此不允許訪問。響應 了HTTP狀態碼405

我CORS中間件上Laravel:

header('Access-Control-Allow-Origin', '*')<br> 
    header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS')<br> 
    header('Access-Control-Allow-Headers', 'Origin, Content-Type, Authorization , X-Auth-Token');<br> 

和我的前端和API有不同的地址:
myfrontend.mydomain.com
myapi.mydomain.com

我的Angular HTTP請求標頭是:

let headers = new Headers({ 
     'Content-Type': 'application/json; charset=utf-8',<br> 
     'Authorization': 'LaravelReturnedAuthToken',<br> 
     'Accept': 'application/json; charset=utf-8',<br> 
     'Access-Control-Allow-Origin': '*',<br> 
     'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',<br> 
     'Access-Control-Allow-Headers': 'Content-Type, x-xsrf-token',<br> 
}); 

let options = new RequestOptions({headers: headers}); 

如果我刪除Angular HTTP請求標頭,一切正常。 我不明白我做錯了什麼。

API:Laravel 5.3
前端:角4

+0

'405(不允許的方法)'表示您需要配置PHP服務器來處理OPTIONS請求。由於您的請求會在請求中添加Content-Type:application/json和Authorization標頭,因此會觸發瀏覽器在您嘗試從您的任何請求中自動執行CORS預檢選項請求之前自己的代碼。如果該預檢失敗,那麼瀏覽器就不會繼續在您的代碼中嘗試請求。見https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests – sideshowbarker

回答

0

剛剛從你的要求刪除那些Access-Control頭。它們並不是要發送請求,而是必須返回響應。

更多關於這對MDN:

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

+0

我改爲:let headers = new Headers({Content = Type''''application/json; charset = utf-8', 'Authorization':'LaravelReturnedAuthToken', 'Accept':'application/json; charset = utf-8', });但它還沒有工作! – MajidAhmadi

+0

你的API可能沒有按照你的想法配置。你應該在chrome的網絡標籤中檢查它,你可以在那裏看到完整的請求和響應標題。我想這些'訪問控制'頭將在響應中丟失。你在這裏描述的錯誤是這樣說的:'沒有'Access-Control-Allow-Origin'標題出現在請求的資源上 –