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
新建文件夹,复制文件,glide保存文件android 获取sdcard,获取data.data 目录file.mkdirs() file.mkdir()Device File Expl