我不能发送带有标题的http请求到角4的laravel api

时间:2017-10-21 10:49:53

标签: php angular laravel-5 httprequest

我正在尝试使用Laravel护照进行身份验证,将带有标头的请求发送到我的Laravel 5.3 API。返回的标题:

  

405(不允许的方法)
  对预检请求的响应   没有通过访问控制检查:没有'Access-Control-Allow-Origin'   标头出现在请求的资源上。起源   因此,“http://localhost:4200”不允许访问。响应   有HTTP状态码405。

我在Laravel上有CORS中间件:

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
前端:Angular 4

1 个答案:

答案 0 :(得分:1)

只需从您的请求中删除这些Access-Control标头即可。它们并不意味着随请求发送,而是必须与响应一起返回。

关于MDN的更多信息:

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