使用 API 的 json POST 缺少 CORS 标头“Access-Control-Allow-Origin”
Posted
技术标签:
【中文标题】使用 API 的 json POST 缺少 CORS 标头“Access-Control-Allow-Origin”【英文标题】:CORS header ‘Access-Control-Allow-Origin’ missing for json POST using API 【发布时间】:2020-06-04 07:10:24 【问题描述】:在 Laravel 5.8 上安装了fruitcake/laravel-cors
我的测试服务器使用 php artisan serve 在 127.0.0.1:8000 使用 routes/api.php 客户端(nuxt)在 127.0.0.1:3000 上运行
我可以使用 POSTMAN 工具向服务器发送数据
我已经配置了fruitcake/laravel-cors
protected $middleware = [
// ...
\Fruitcake\Cors\HandleCors::class,
];
和配置/cors.php
<?php
return [
/*
* You can enable CORS for 1 or multiple paths.
* Example: ['api/*']
*/
'paths' => [],
/*
* Matches the request method. `[*]` allows all methods.
*/
'allowed_methods' => ['*'],
/*
* Matches the request origin. `[*]` allows all origins.
*/
'allowed_origins' => ['*'],
/*
* Matches the request origin with, similar to `Request::is()`
*/
'allowed_origins_patterns' => [],
/*
* Sets the Access-Control-Allow-Headers response header. `[*]` allows all headers.
*/
'allowed_headers' => ['*'],
/*
* Sets the Access-Control-Expose-Headers response header.
*/
'exposed_headers' => false,
/*
* Sets the Access-Control-Max-Age response header.
*/
'max_age' => false,
/*
* Sets the Access-Control-Allow-Credentials header.
*/
'supports_credentials' => false,
];
仍然得到:
访问 XMLHttpRequest 在 'http://127.0.0.1:8000/api/customerFeedbackStore' 来自原点 'http://127.0.0.1:3000' 已被 CORS 策略阻止:否 请求中存在“Access-Control-Allow-Origin”标头 资源。
在浏览器中。
【问题讨论】:
响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应? 更新配置以定义您要运行 CORS 服务的路径:'paths' => ['api/*']
此问题已在github 上报告。好像有点复杂。
【参考方案1】:
'paths' 不能为空。您至少应该将其设置为 [ '*' ],以便它涵盖每个请求。
【讨论】:
【参考方案2】:似乎 Cors 配置正确,但 var_dump() 和 dd() 在 return 之前触发了消息。也不返回任何东西会导致 cors 消息..
var_dump($request);
dd($request);
返回一个 json 响应(因为我正在使用 Json)工作正常。 (还有其他退货建议吗?)
return response()->json([
'data-received' => true
]);
【讨论】:
以上是关于使用 API 的 json POST 缺少 CORS 标头“Access-Control-Allow-Origin”的主要内容,如果未能解决你的问题,请参考以下文章
API网关GET失败,出现 "缺少认证令牌"(但POST正常)。
Power Query 缺少对 Windows 身份验证和 REST API POST 正文的支持