【问题标题】:Ajax POST to Laravel API occasionally blocked by CORSAjax POST 到 Laravel API 偶尔会被 CORS 阻止
【发布时间】: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


【解决方案1】:

你可以使用下面的包在 Laravel 中处理 CORS

https://github.com/barryvdh/laravel-cors

【讨论】:

    猜你喜欢
    • 2021-02-07
    • 2021-06-13
    • 1970-01-01
    • 2015-05-05
    • 2020-08-16
    • 2020-08-23
    • 2020-07-14
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多