【发布时间】:2020-01-02 06:43:07
【问题描述】:
对我的 Laravel api 的 Ajax POST 调用被 CORS 策略阻止,但只有 5 次中的 1 次。
POST 调用每次都被 CORS 阻止,然后我添加了提供访问控制标头的中间件(下面的代码)。现在奇怪的是时不时被屏蔽。
js调用:
$.post('https://myapi.com/api/posters', {somedata: 1}, function(data) {
console.log(data);
);
中间件:
public function handle($request, Closure $next)
{
header("Access-Control-Allow-Origin: *");
$headers = [
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin'
];
$response = $next($request);
foreach($headers as $key => $value)
$response->header($key, $value);
return $response;
}
注意:js 应用在 laravel 应用之外。 错误信息:
Access to XMLHttpRequest has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
【问题讨论】:
-
在 Laravel 中为这个特定的 API 添加一个 CSRF 令牌异常可能会帮助你摆脱它。
-
我在 VerifyCsrfToken 中间件中添加了 $expect 数组的 API 路径,但问题还没有解决
-
关注此讨论,您可能会找到答案。 laracasts.com/discuss/channels/general-discussion/…
-
失败的时候,响应的HTTP状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?
标签: jquery ajax laravel server cors