如何排除特定域的 CSRF 令牌?
How to exclude CSRF token for specific domain?
我希望为特定域禁用 CSRF 验证令牌。例如,我的 EC2 实例。这样我就可以 运行 在我的 EC2 实例上进行实时跨浏览器测试,而不会出现任何问题。
我发现了很多关于更新应用程序中特定路由的中间件目录中的 VerifyCsrfToken
的信息,但没有关于如何检查主机或域的信息。我可以在受保护的 URI 中使用 /*
。
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/*'
];
}
但是,出于显而易见的原因,我不想使用这种方法。
我使用的是标准 Laravel 5.3 设置,因此使用了此框架附带的常用中间件文件。
如有任何帮助,我们将不胜感激!
我认为最好的方法是重写 isExceptArray
父函数 class Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
.
把你的逻辑写在那里。
您可以在 CSRF 中间件中检查用于发出请求的主机并采取相应措施。在您的 VerifyCsrfToken class 中添加以下内容:
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);
}
我希望为特定域禁用 CSRF 验证令牌。例如,我的 EC2 实例。这样我就可以 运行 在我的 EC2 实例上进行实时跨浏览器测试,而不会出现任何问题。
我发现了很多关于更新应用程序中特定路由的中间件目录中的 VerifyCsrfToken
的信息,但没有关于如何检查主机或域的信息。我可以在受保护的 URI 中使用 /*
。
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/*'
];
}
但是,出于显而易见的原因,我不想使用这种方法。
我使用的是标准 Laravel 5.3 设置,因此使用了此框架附带的常用中间件文件。
如有任何帮助,我们将不胜感激!
我认为最好的方法是重写 isExceptArray
父函数 class Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
.
把你的逻辑写在那里。
您可以在 CSRF 中间件中检查用于发出请求的主机并采取相应措施。在您的 VerifyCsrfToken class 中添加以下内容:
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);
}