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 没有“访问控制允许来源”标题的主要内容,如果未能解决你的问题,请参考以下文章