我正在使用Chrome版本31.0.1650.63 m。
最近,我注意到Chrome开发者控制台中出现了一些错误,但是我的网站似乎没有任何问题。调查后,这些错误似乎与嵌入的YouTube链接相关。有问题的标记如下:
<iframe width="560" height="315" src="http://www.youtube.com/embed/hhhrWFxWQRk" frameborder="0" allowfullscreen></iframe>
这个视频本身并不重要(我只是在YouTube首页上随便选择了一个作为测试),但我在此包含了我正在使用的链接,以防发生非常具体的情况。
在Chrome中发出请求的响应头如下:
Alternate-Protocol:80:quic
Cache-Control:no-cache
Content-Encoding:gzip
Content-Length:2560
Content-Type:text/html; charset=utf-8
Date:Sun, 12 Jan 2014 20:35:54 GMT
Expires:Tue, 27 Apr 1971 19:44:06 EST
Server:gwiseguy/2.0
X-Content-Type-Options:nosniff
X-Frame-Options:ALLOWALL
X-XSS-Protection:1; mode=block; report=https://www.google.com/appserve/security-bugs/log/youtube
我在Chrome开发者控制台中看到的错误如下:
Invalid 'X-Frame-Options' header encountered when loading 'http://www.youtube.com/embed/hhhrWFxWQRk': 'sil' is not a recognized directive. The header will be ignored.
Error parsing header X-XSS-Protection: sil: expected 0 or 1 at character position 0. The default protections will be applied.
在大红字中,我注意到错误都引用了“sil”这个值,但我没有在HTTP请求的任何响应头中看到它。
视频显示和播放正常,而且错误显示将使用默认设置-因此这似乎不是问题。然而,我很想了解发生了什么以及为什么会出现这些错误。
我注意到这些错误涉及到XSS,并且根据我的研究,我认为X-XSS-Protection标头仅适用于IE8,而YouTube返回的值无效(report=等)。根据规范,X-Frame-Options标头的值似乎是无效的,但是Wikipedia(我知道!)引用了ALLOWALL选项:
除此之外,一些广告网站返回一个非标准的ALLOWALL值,其目的是允许在任何页面上框架他们的内容(相当于根本没有设置X-Frame-Options)。[31]
这是一个有效的问题吗?这是Chrome解析错误、youtube标头的问题,还是我完全错了?
我还在Firefox v26、IE 11.0.6600.16476和Opera 12.16中进行了一些测试,这些浏览器都不会产生此错误。