Laravel 生产环境下,CORS 没有 'Access-Control-Allow-Origin' 头部信息。

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

enter image description here

我的 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应用程序是否需要进一步更改,因为它在Postman上运行,调用看起来像这样:

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

有什么解决方法吗?


请以文本形式发布所有内容,而不是作为图像,以帮助人们帮助您。 - Gulzar
你解决了这个问题吗? 我目前也面临着同样的问题。 - Muaath Alhaddad
3个回答

0

在您的 Cors.php 文件中修改此设置。

'paths' => ['api/getList', 'api/getDetails/*'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => [],

    'max_age' => 0,

    'supports_credentials' => true,

-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已经设置,但更改exposed_headers对帮助没有任何作用。我尝试在cors.php中进行了一些更改,写出了标头名称,而不是使用通配符并写出我的angular应用程序的特定来源。 - Oskar Mikael
试试这个 https://github.com/fruitcake/laravel-cors/issues/239#issuecomment-642527759 - Ryヅ

-1

我通过在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');

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接