我已经看到很多关于这个的全部帖子…但是对于我来说,我不知道我的问题是什么!当我尝试使用XSL转换XML时,Google Chrome只会显示一个空白页面。当我查看源代码时,我看到了原始的XML。 IE工程。
我有一个这样的XML文档…
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="http://localhost/xsl/listXSL.PHP"?> <links> <link id="1" name="Google Home Page" url="http://www.google.com/" clicks="0" /> <link id="2" name="Facebook" url="http://www.facebook.com/" clicks="1" /> <link id="3" name="Gmail" url="http://gmail.com" clicks="2" /> </links>
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:for-each select="links/link"> <a> <xsl:attribute name="href"> <xsl:value-of select="@url" /> </xsl:attribute> <xsl:value-of select="@name" /> </a><br /> </xsl:for-each> </xsl:template> </xsl:stylesheet>
您可能会注意到,XSL文件实际上是一个PHP文件,但是这在其他浏览器中可以正常工作,我已经尝试将其更改为.xsl for Chrome,但是没有帮助。我在这里做错什么?
这不行的原因是由于安全问题,铬已经解决了一个有争议的方式
[1]
[2]
@L_403_2@
[4],通过阻止XML文件访问同一目录中的本地XSLT文件,而HTML文件可以访问.CSS文件在同一个目录只是罚款。
Chrome团队在2008年给出的理由是this:
想象这种情况:
>您收到一封包含网页作为附件的攻击者的电子邮件,您将下载该邮件。
>您在浏览器中打开现在本地的网页。
>本地网页创建一个源代码为https://mail.google.com/mail/。
>由于您已登录Gmail,该框架会将邮件加载到收件箱中。
>本地网页通过使用JavaScript来访问帧[0] .document.documentElement.innerHTML来读取帧的内容。 (互联网网页将无法执行此步骤,因为它来自非Gmail来源;同源策略会导致读取失败。)
>本地网页将您的收件箱的内容放入并通过表单POST将数据提交给攻击者的Web服务器。现在攻击者有您的收件箱,这可能对垃圾邮件或识别盗窃有用。
Gmail无法防御此次攻击。
我同意这是烦人的,作为一个修复你有两个解决方案:
>尝试使用–allow-file-access-from-files开关运行chrome(我没有自己测试)>将其上传到主机,一切都会很好。