我不能发送http请求与标题laravel api角4

我不能发送http请求与标题laravel api角4

问题描述:

我想发送带有标头的请求到我的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

刚刚从你的要求删除那些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'标题出现在请求的资源上 –