Laravel 5.1 iframe 中的 CSRF,如何使其工作?

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

我的应用程序有一个插件,用户可以在包含表单的网站中实现该插件。问题是提交表单时我得到

TokenMismatchException
。从我所做的研究中,我可以看到 Laravel 提供了跨源保护。

我知道我可以禁用它,但我不知道之后如何保护表单。

大家有遇到过这个问题吗?最佳做法是什么?

谢谢你

注意:我注意到,如果用户之前访问过原始网站,然后转到包含 iframe 的网站,则不再抛出异常。

php laravel iframe csrf
4个回答
9
投票

您需要更改

config/session.php
中的 same_site 值。

像这样

'same_site' => 'none',
'secure' => env('SESSION_SECURE_COOKIE'),

并在

.env 文件
中设置 SESSION_SECURE_COOKIE=true

更多信息请查看此youtube 视频


2
投票

Laravel 不允许从其他域提交表单,但您可以设置例外。

您可以在

App/Http/Middleware/VerifyCsrfToken.php
中添加例外。

protected $except = [
    'post/something'
];

来源:EasyLaravel


0
投票

如果我理解了这个问题。 可能提交表单必须有一个包含令牌会话的令牌输入。

<form mothod = 'post' action = 'YourAction'>

<input type = 'hidden' name = '_token' value = '{{Session:token()}}'>
.
.
.
</form>

0
投票

您可以通过在 app/Http/Middleware/VerifyCsrfToken.php 文件中的 except 数组中添加 URL 来禁用对特定 URL 的 CSRF 令牌检查

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