Laravel 5 和 Internet Explorer:令牌不匹配

Posted

技术标签:

【中文标题】Laravel 5 和 Internet Explorer:令牌不匹配【英文标题】:Laravel 5 and Internet Explorer : Token Mismatch 【发布时间】:2015-09-03 15:38:18 【问题描述】:

我的 Laravel5 网站使用 csrf 令牌来防止 CSRF 攻击。在 Chrome 和 Firefox 上,一切正常。

我提交了站点供我的客户测试,当他使用 Internet Explorer (9/10) 时,他在使用令牌的每个页面上都出现“令牌不匹配”错误。

我认为这是一个 cookie/会话问题。

经过一番研究,我尝试删除 cookie 名称中的斜杠(“laravel_session”),并更改会话驱动程序(默认为“file”)。它没有帮助。

我知道我的客户可以更改其在 IE 中的“信任策略”,但它是一个公共站点,这只是一个临时解决方案。

对这个奇怪的问题有什么想法吗?

【问题讨论】:

我在一个组织工作,一些用户在 8-11 使用 IE 浏览,我也遇到了同样奇怪的问题。我使用 Laravel 5 启动了一个 HR 应用程序,它一启动我就检查了日志,发现到处都是“令牌不匹配”错误! @user534498 的回答是一个好的开始,我没有考虑过,但希望对此问题有更多解释,因为我什至不知道从哪里开始寻找其根本原因。 【参考方案1】:

我不确定你的情况。但我今天刚遇到同样的问题。只有 IE 有问题。 FF 和 chrome 工作正常。

然后我意识到服务器上的时间/日期是错误的。将服务器设置为当前日期,然后一切正常。

我猜是因为服务器会根据自己的时间设置cookie过期,而在客户端,如果服务器滞后,IE会立即删除cookie。只是我的猜测。

希望它也能解决您的问题。祝你好运。

【讨论】:

【参考方案2】:

我遇到了同样的问题,为我解决的问题是将我的 .htaccess 过期设置编辑为:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault A0
    ExpiresByType text/html A0
    # Set up caching on media files for 1 year
    <FilesMatch "\.(jpg|png|gif|js|css|ico|woff|woff2|eot|svg|ttf)$">
        ExpiresDefault A31536000
    </FilesMatch>
</IfModule>

之前,我的 ExpiresDefault 是 A31536000,我没有 ExpiresByType text/html。

【讨论】:

【参考方案3】:

我遇到了同样的问题,这是由于 P3P 错误。在 Edge (Windows 10) 上遇到问题。

我做了很多研究,终于把它修好了。

您所要做的就是创建一个新的中间件并将句柄函数更新到,

public function handle($request, Closure $next)

    $response = $next($request);
    $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    return $response;

详细解释在

https://robinz.in/csrf-token-session-error-with-laravel-on-ie-edge/

【讨论】:

出于某种原因对我来说都不是【参考方案4】:

在我的情况下,问题是服务器时间。 我在某处读到,如果服务器时间早于客户端,IE 会清除 cookie。 然后我注意到这里的服务器时间晚了8个小时。 修复此问题后,令牌不匹配错误消失。

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。

以上是关于Laravel 5 和 Internet Explorer:令牌不匹配的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.8 上为 IE11 编译 vue.js 和 tailwind.js

在 laravel 中生成 url

linux下C语言对编译报错‘expl’未定义的引用

新建文件夹,复制文件,glide保存文件android 获取sdcard,获取data.data 目录file.mkdirs() file.mkdir()Device File Expl

5 星和金色 5 星不在一起(使用 Internet Explorer 浏览时)

Laravel 5 和 Laravel 5.1 “找不到类‘模型名称’”,有更好的解决方案吗?