如何排除特定域的 CSRF 令牌?

Tim*_*oke 4 php csrf laravel laravel-5

我希望禁用特定域的 CSRF 验证令牌。例如,我的 EC2 实例。这样我就可以在我的 EC2 实例上运行实时跨浏览器测试,而不会出现任何问题。

我找到了很多有关更新VerifyCsrfToken应用程序内特定路由的中间件目录的信息,但没有找到有关如何检查主机或域的信息。我可以/*在受保护的 URI 中使用。

class VerifyCsrfToken extends BaseVerifier
{
    /**
    * The URIs that should be excluded from CSRF verification.
    *
    * @var array
    */

    protected $except = [
        '/*'
    ];
}
Run Code Online (Sandbox Code Playgroud)

然而,出于显而易见的原因,我不想使用这种方法。

我使用的是标准 Laravel 5.3 设置,因此使用了该框架附带的常用中间件文件。

任何帮助,将不胜感激!

jed*_*ylo 7

您可以检查用于在 CSRF 中间件中发出请求的主机并采取相应的操作。在您的VerifyCsrfToken类中添加以下内容:

public function handle($request, Closure $next)
{
    if ($request->getHost() == 'some.host.without.csrf.protection') {
        // skip CSRF check
        return $next($request);
    }

    return parent::handle($request, $next);
}
Run Code Online (Sandbox Code Playgroud)