首页 > 解决方案 > 在 iframe 中嵌入 Laravel 应用程序,登录时出现 302 错误

问题描述

我正在尝试Laravel appiframe.

我写了一个FrameMiddleware我在标题中允许该域的

 public function handle(Request $request, Closure $next)
    {
        $response = $next($request);
        $response->header('Content-Security-Policy', 'frame-ancestors http://localhost');
        return $response;
    }

并通过使用上述中间件 cors origin 错误删除。

因为我Laravel app需要来自 iframe 的身份验证。它使用的是表单提交,而不是 API。然后它开始给出一个
419 error. 我通过在VerifyCsrfToken中间件$except数组中添加登录路由来排除csrf错误来解决。

然后我检查networkpost登录请求给出 302 错误

iframe 中的 laravel 为发布请求提供 302 错误

我测试了身份验证方法,经过身份验证的用户对象返回Dashboard页面重定向,然后302 error code显示。

此外,我已经开始same_site => null工作config/session.php但仍然没有工作。

标签: phplaravelauthenticationiframecsrf-token

解决方案


正如@apokryfos所说,我需要设置cookietosecure和 set SameSite=None

去 :config/session.php

设置: 'same_site' => 'none''secure' => env('SESSION_SECURE_COOKIE', true) 通过SESSION_SECURE_COOKIE = true.env文件中设置。

并且不要忘记创建FrameMiddleware,因为您可以关注我的问题线程white_labeled您要嵌入 iframe 的域,即 http://localhost。

注意:您可以使用浏览器开发工具进行验证cookies are secured or notSameSite=Null 如下图所示:

cookie 安全且 SameSite=Null 验证


推荐阅读