Laravel 生产,CORS 没有“访问控制允许来源”标题

Posted

技术标签:

【中文标题】Laravel 生产,CORS 没有“访问控制允许来源”标题【英文标题】:Laravel Production, CORS No 'Access-Control-Allow-Origin' header 【发布时间】:2021-07-18 23:05:31 【问题描述】:

在 Heroku 上部署我的 Laravel API 应用程序后,Cors 似乎出现了问题。这在开发中没有问题,我仍然可以在邮递员上使用已部署的应用程序,但不能通过我的 Angular 应用程序上的常规 HTTP 请求。

我的 Cors.php 是没有被修改过的

   'paths' => ['api/*', 'sanctum/csrf-cookie'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => ['*'],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,

我的 Kernel.php 使用 HandleCors 类

 protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\TrustProxies::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

不确定我的 Angular 应用是否需要进一步更改,因为它正在使用邮递员,所以调用看起来像这样

  // User registration
  register(user: User): Observable<any> 
    return this.http.post('https://secure-fortress-48055.herokuapp.com/api/register', user);
  

关于如何解决这个问题的任何想法?

【问题讨论】:

请将所有内容发布为文本,而不是图像,以帮助人们帮助您。 这个问题你解决了吗?我目前面临同样的问题 【参考方案1】:

你能发布你的 .env 文件吗? 我认为您需要修改 .env 文件并更改以下代码

APP_URL=http://localhost

APP_URL=https://secure-fortress-48055.herokuapp.com/

你还需要更改 Cors.php

    'exposed_headers' => [],

    'exposed_headers' => ['Access-Control-Allow-Origin'],

也许这会对你有所帮助

【讨论】:

APP_URL 已设置,但更改暴露标题无济于事角度应用 试试这个github.com/fruitcake/laravel-cors/issues/…【参考方案2】:

我通过在 api.php 路由中添加标头解决了这个问题

header('Access-Control-Allow-Origin:  *');
header('Access-Control-Allow-Methods:  POST, GET, OPTIONS, PUT, PATCH, DELETE');
header('Access-Control-Allow-Headers: Accept, Content-Type, X-Auth-Token, Origin, Authorization');

也许不是最优雅的解决方案,但它是一个。

【讨论】:

以上是关于Laravel 生产,CORS 没有“访问控制允许来源”标题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 上的 CORS(访问控制允许来源)

没有“访问控制允许来源”-CORS

访问被 CORS 策略阻止:没有“访问控制允许来源”

Axios - 没有“访问控制允许来源” - CORS

已被 CORS 策略阻止:没有“访问控制允许来源”

如何修复“评估已被 CORS 政策阻止:反应中没有“访问控制允许来源”