php - 如何排除特定域的 CSRF token ?

标签 php laravel laravel-5 csrf

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

我发现了很多关于在中间件目录中更新 VerifyCsrfToken 以获取应用内特定路由的信息,但没有关于如何检查主机或域的信息。我可以在 protected URI 中使用 /*

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

    protected $except = [
        '/*'
    ];
}

但是,出于显而易见的原因,我不希望使用这种方法。

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

如有任何帮助,我们将不胜感激!

最佳答案

您可以检查用于在 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);
}

关于php - 如何排除特定域的 CSRF token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188393/

相关文章:

javascript - ReactJS 渲染从 Laravel Controller 作为 json 字符串传递的数据

php - Eloquent BelongsToMany 关系搜索为空

javascript - app.message 在 Laravel 中使用 Vue 在控制台中返回 undefined

laravel-5 - 将驱动程序从同步升级到 Redis 后,Laravel 5.1 邮件队列无法正常工作

php - Laravel 中组合两个表的模型

php - Laravel 中的 get 路由覆盖资源路由,如何克服这个问题

php - 哪个是最好的 php 框架?

php - 在1-1关系中,为什么我的插入在两个表中插入两条记录?

php & mysql 记录个人时区

php - 在 php 中创建一个包含其他语言字符的文件