php Laravel重定向失败,出现CORS错误

lymnna71  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(132)

我有一个Laravel API,我试图将用户重定向到我的网站(Angular),但它不起作用。这是Laravel的代码片段。

public function payViaApplePay(Request $request)
{
    $paymentId = $request['payment_id'];
    $paymentData = $request['payment_data'];

    $results = $this->service->payViaApplePay($paymentId, $paymentData);

    $redirect_url = $this->service->getRedirectURL((array)$results);
    return redirect()->away($redirect_url);
}

这是浏览器中的错误
[错误]加载资源失败:Access-Control-Allow-Origin不允许原点为空。状态代码:200
我试图在重定向中添加origin header,但没有任何区别。我该怎么解决呢?还是有更好的重定向方法

jhkqcmku

jhkqcmku1#

可能对你有帮助。我以前犯过这个错误。我创建了一个名为EnableCors的新中间件

php artisan make:middleware EnableCors

并将这些数据放入句柄函数中

public function handle(Request $request, Closure $next): Response
{
    $response = $next($request);

    $response->headers->set('Access-Control-Allow-Origin', '*');
    $response->headers->set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
    $response->headers->set('Access-Control-Allow-Credentials', 'true');
    $response->headers->set('Access-Control-Max-Age', '86400');
    $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization, X-Requested-With, Application');

    return $response;
}

并在Http/Kernel.php文件中更新此部分:

protected $middlewareGroups = [

    'api' => [
        \App\Http\Middleware\EnableCors::class, // add this
         \\ ...

    ],
];

protected $middlewareAliases = [
    'cors' => \App\Http\Middleware\EnableCors::class, // add this
    // ...
];

(all我的API以/api前缀开头,所以我只为以/api前缀开头的路由添加了这个中间件,如果你不这样做,你可以在其他中间件组中添加这些行)
在这些变化后,我的问题与相同的错误代码固定

相关问题