Google趋势嵌入和X-Frame-Options

时间:2018-07-16 09:42:32

标签: javascript embed x-frame-options google-trends

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

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

我已将脚本放在index.html的正文中,并将其托管在本地以及外部服务器上。

据我所知,这是为了停止“点击劫持”,但是Google提供的脚本不适用于自己的浏览器似乎很奇怪。 Firefox可以正常工作。

这是Google趋势嵌入的一个基本问题,只是不能与Google自己的产品一起使用,还是我的服务器设置存在问题?

2 个答案:

答案 0 :(得分:2)

这是因为您的浏览器已设置为阻止第三方Cookie。启用第三方Cookie,嵌入式Google趋势iframe即可使用。

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

  

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

标头链接到this page并附有以下说明:

  

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

     

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

答案 1 :(得分:0)

很久以前,当我从事基于春季的项目时,我就面临着同样的问题。我可以预先告诉您一件事,那就是Google趋势不是问题,您需要通过稍微更改请求来解决它。 使用请求标头,您需要发送一个附加标头X-Frame-Options并将其值设置为SAMEORIGIN

由于有关类似问题的讨论here,因此我没有提供详细信息。

希望这会有所帮助!

更新1:

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

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