我的应用程序有一个插件,用户可以在包含表单的网站中实现该插件。问题是提交表单时我得到
TokenMismatchException
。从我所做的研究中,我可以看到 Laravel 提供了跨源保护。
我知道我可以禁用它,但我不知道之后如何保护表单。
大家有遇到过这个问题吗?最佳做法是什么?
谢谢你
注意:我注意到,如果用户之前访问过原始网站,然后转到包含 iframe 的网站,则不再抛出异常。
您需要更改
config/session.php中的
same_site
值。
像这样
'same_site' => 'none',
'secure' => env('SESSION_SECURE_COOKIE'),
并在
.env 文件中设置
SESSION_SECURE_COOKIE=true
。
更多信息请查看此youtube 视频
Laravel 不允许从其他域提交表单,但您可以设置例外。
您可以在
App/Http/Middleware/VerifyCsrfToken.php
中添加例外。
protected $except = [
'post/something'
];
来源:EasyLaravel
如果我理解了这个问题。 可能提交表单必须有一个包含令牌会话的令牌输入。
<form mothod = 'post' action = 'YourAction'>
<input type = 'hidden' name = '_token' value = '{{Session:token()}}'>
.
.
.
</form>
您可以通过在 app/Http/Middleware/VerifyCsrfToken.php 文件中的 except 数组中添加 URL 来禁用对特定 URL 的 CSRF 令牌检查