Laravel 10 - CSRF 令牌在我的 Laravel 服务器渲染应用程序上的其他设备上不起作用

问题描述 投票:0回答:1

为了测试我的应用程序。我已经使 PHP 可从防火墙访问,并且它有效。该应用程序与我本地计算机上的任何浏览器都能很好地配合。 现在的问题是,我无法使用我的 Android 设备网络浏览器登录。该应用程序在Android上显示得很好,但我无法登录,我总是

419 | PAGE EXPIRED
,但调试栏中有一个例外:来自文件
CRSF token mismatch.    Illimunate\Session\TokenMismatchException
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
85

我尝试了很多想法来自这个给定的解决方案但没有任何效果。 我已经尝试过Laravel CSRF 令牌未找到

所有这些解决方案都适用于使用前端的应用程序。我的应用程序直接通过刀片模板以非常简单的 HTML/CSS 设置提供服务。

我尝试通过在'secure' => env('SESSION_SECURE_COOKIE', false),中设置

config/session.php
来解决
CSRF令牌在laravel
中不起作用,但什么也没发生。

laravel
1个回答
0
投票

Laravel 将其所有会话信息(用户、令牌、闪存等)存储在名为

appname_session
的单个安全加密 cookie 中(请参阅
cookie
中的
config/session.php
)。该 cookie 仅适用于注册为
SESSION_DOMAIN
的主机。这就是为什么您无法使用与
SESSION_DOMAIN
不同的其他 URL 登录。

当您处于

development
环境中时,您必须在
.env
文件中注释该变量,以便使您的
appname_session
cookie 可用于您的应用程序在开发模式下使用的其他主机名。

对于那些想要在

Postman
环境中使用
production
并出现同样问题的人,这里是我为前端开发人员找到的一个很好的教程,因为不建议为
SESSION_DOMAIN
删除
production
访问此链接,看看他们是如何处理的。

我希望这能避免人们像我一样浪费时间。

© www.soinside.com 2019 - 2024. All rights reserved.