如何在确认确认 URL 中包含 CSRF 令牌?

问题描述 投票:0回答:1

使用 Laravel,我添加了 Affirm 并且在我的 affirm.checkout 数据中,我将 user_confirmation_url 设置为转到专门处理 Affirm 订单的路由:

affirm.checkout({
        "merchant": {
            "user_confirmation_url": "http://127.0.0.1:8000/affirm-order",
            ...

当对该 URL 发出请求时,我收到 419 错误,因为没有 CSRF 令牌。

我怎样才能在那个 url 中包含一个 csrf 令牌?

我尝试将

@csrf
添加到页面,并制作网址
"user_confirmation_url": "http://127.0.0.1:8000/affirm-order?token={{csrf_token()}}",
,但这没有用。

laravel csrf
1个回答
1
投票

如果

http://127.0.0.1:8000/affirm-order
是结帐服务完成后必须调用的 url,则它无法知道正确的 CSRF 令牌。您必须在
VerifyCsrfToken
中间件中为该特定端点添加一个例外。

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array<int, string>
     */
    protected $except = [
        'affirm-order',
    ];
}
© www.soinside.com 2019 - 2024. All rights reserved.