我不能发送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
刚刚从你的要求删除那些Access-Control
头。它们并不是要发送请求,而是必须返回响应。
更多关于这对MDN:
我改为:let headers = new Headers({Content = Type''''application/json; charset = utf-8', 'Authorization':'LaravelReturnedAuthToken', 'Accept':'application/json; charset = utf-8', });但它还没有工作! – MajidAhmadi
你的API可能没有按照你的想法配置。你应该在chrome的网络标签中检查它,你可以在那里看到完整的请求和响应标题。我想这些'访问控制'头将在响应中丢失。你在这里描述的错误是这样说的:'没有'Access-Control-Allow-Origin'标题出现在请求的资源上 –
'405(不允许的方法)'表示您需要配置PHP服务器来处理OPTIONS请求。由于您的请求会在请求中添加Content-Type:application/json和Authorization标头,因此会触发浏览器在您尝试从您的任何请求中自动执行CORS预检选项请求之前自己的代码。如果该预检失败,那么浏览器就不会继续在您的代码中尝试请求。见https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Preflighted_requests – sideshowbarker