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

时间:2019-02-04 19:49:50

标签: javascript laravel iframe xss allow-same-origin

我有一个laravel 5.7应用程序。我在

的一页中有一个iframe
<iframe src="{{ url('pdf') }}" width="100%" height="80%" 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 个答案:

答案 0 :(得分:0)

上面的解释并未清楚说明您要尝试执行的操作,而是查看this页上如何正确配置跨站点请求伪造设置。

了解什么是CSRF很重要。本质上,这是一项安全功能,可防止我复制HTML,对其进行修改以执行您不想要的事情,然后发送带有可能会利用您的网站的请求。

为了使您的逻辑起作用,您需要绕过Laravel的内置CSRF中间件。对于生产服务器,我不会删除它,但是对于测试,您可以在Kernel.php文件中注释掉包含“ \ App \ Http \ Middleware \ VerifyCsrfToken :: class”的行,这应该可以解决问题。