laravel response() 函数未正确设置 iframe 原点

Posted

技术标签:

【中文标题】laravel response() 函数未正确设置 iframe 原点【英文标题】:laravel response() function is not setting iframe origin properly 【发布时间】:2019-06-28 14:51:12 【问题描述】:

我有一个 laravel 5.7 应用程序。我在一个页面中有一个 iframe

<iframe src=" url('pdf') "   id="frame_id" name="test_frame"></iframe>

什么时候

Route::get('/pdf', function ()   
    return 'abc';
);

然后我在控制台里面写

window.frames["frame_id"].contentWindow.origin => http://cms.test

但是当

Route::get('/pdf', function () 
    return response()->file('test.pdf');
);

然后

window.frames["frame_id"].contentWindow.origin

=> SecurityError: Permission denied to access property "origin" on cross-origin object

为什么在这两种情况下原点都在变化?我该如何解决这个问题,因为由于跨域我无法操作 iframe dom

【问题讨论】:

【参考方案1】:

上面的解释并没有说明您要做什么,但请查看this 页面了解如何正确配置跨站点请求伪造设置。

了解什么是 CSRF 很重要。它本质上是一种安全功能,可防止我复制您的 html、修改它以执行您不希望的操作,然后发送包含可能利用您网站的内容的请求。

为了让你的逻辑工作,你需要绕过 Laravel 内置的 CSRF 中间件。对于生产服务器,我不会删除它,但对于测试,您可以在 Kernel.php 文件中注释掉包含“\App\Http\Middleware\VerifyCsrfToken::class”的行,这样就可以了。

【讨论】:

我也禁用了它。没有效果

以上是关于laravel response() 函数未正确设置 iframe 原点的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Response::download 不起作用,单击按钮时未下载 pdf 文件

如何正确设置 PhpStorm? Сan't run PHPUnit on Laravel 8 on Windows 10. 调用未定义函数 Tests\Unit\is_id_term()

Laravel 5.6 API 资源未显示关系数据

Laravel Response::download() 函数图片问题

JWT Cookie 未正确存储 - Laravel

在 Laravel 4.1 中形成 AJAX 后响应周期。*