Google趋势嵌入和X-Frame-Options

问题描述 投票:2回答:2

尝试使用Google趋势中的嵌入脚本会导致Chrome下面出现以下错误。

Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

我把脚本放在index.html的主体中,并在本地托管,也在外部服务器上托管。

从我可以收集到的,它是停止'clickjacking',但谷歌提供的脚本不适用于他们自己的浏览器似乎很奇怪。 Firefox工作得很好。

这是谷歌趋势嵌入的一个根本问题,只是不使用谷歌自己的产品,还是我的服务器设置问题?

javascript embed x-frame-options google-trends
2个回答
2
投票

这是因为您的浏览器设置为阻止第三方Cookie。启用第三方Cookie以及嵌入式Google趋势iframe将起作用。

如果仔细查看失败的iframe请求,它将包含此标头:

p3p:CP =“这不是P3P政策!有关详细信息,请参阅g.co/p3phelp。”

标题链接到this page,并附有以下解释:

在某些情况下,我们用于保护和验证您的Google帐户并存储您的偏好的Cookie可能会在与您访问的网站不同的域中提供。例如,如果您使用Google +1按钮访问网站,则可能会发生这种情况。

某些浏览器要求第三方cookie使用P3P协议来声明其隐私惯例。但是,P3P协议的设计并未考虑到这些情况。因此,我们在Cookie中插入了一个链接,该链接将用户引导至一个页面,在该页面中他们可以了解有关与这些Cookie相关的隐私惯例的更多信息。


0
投票

在我使用基于弹簧的项目时,我早就遇到了同样的问题。有一件事我可以事先告诉你,这不是谷歌趋势的问题,你需要通过稍微改变你的请求来解决它。使用您的请求标头,您需要发送额外的标头X-Frame-Options并将其值设置为SAMEORIGIN

我没有提供有关这方面的细节,因为类似的问题已经讨论过here

希望这可以帮助!!!

更新1:

不要对X-Frame-Options和你嵌入的框架感到困惑。当您尝试在网页上嵌入框架时,浏览器会检查您是否允许使用SAMEORIGIN。默认情况下,它未启用,因此您收到错误。但是在你的后端代码中,如果你配置的方式是每次请求,你的框架都会添加一个标题为X-Frame-Options,其值为SAMEORIGIN,然后浏览器将允许它。请注意,SAMEORIGIN将允许您网站上的每个网页,这可能会导致安全问题。所以另一种选择是,您只需使用ALLOW-FROM标记设置Google趋势网站,而不是sameorigin

(根据你的评论,你使用的是Laravel框架(我从未使用过php),this link对你有用。或者你可以谷歌“如何在laravel中设置x-frame-options sameorigin”。

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