Laravel 5.1 iframe 中的 CSRF,如何让它工作?

Laravel 5.1 CSRF in iframe, how to make it work?

我有一个适用于我的应用程序的插件,用户可以在其包含表单的网站上实施该插件。问题是我在提交表单时得到 TokenMismatchException。从我所做的所有研究中,我可以看到来自 Laravel.

的跨源保护

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

你们中有人遇到过这个问题吗?最佳做法是什么?

谢谢

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

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

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

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

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

您可以在 App/Http/Middleware/VerifyCsrfToken.php 中添加例外。

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

来源:EasyLaravel

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

您需要更改 config/session 中的 same_site 值。php .

像这样

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

并在 .env 文件中设置 SESSION_SECURE_COOKIE=true.

查看更多信息youtube video