我已经看到了很多关于这个的帖子。。。但我不能,为了我的生命,弄明白我的问题是什么!当我尝试用XSL转换XML时,Google Chrome只显示一个空白页面。当我查看源代码时,我看到了原始XML。他工作得很好
我有一个XML文档,看起来像这样
<;?xml version=“1.0”encoding=“ISO-8859-1”?>;
<;?xml样式表type=“text/xsl”href=”http://localhost/xsl/listXSL.php“?>;
<;链接>;
<;link id=“1”name=“谷歌主页”url=”http://www.google.com/“点击次数=“0”/>;
<;link id=“2”name=“Facebook”url=”http://www.facebook.com/“clicks=”1“/>;
<;link id=“3”name=“Gmail”url=”http://gmail.com“clicks=”2“/>;
</链接>;
。。。然后是链接的XSL文件,看起来像这样
<;?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:select的值=“@url”/>;
</xsl:attribute>;
<;xsl:select的值=“@name”/>;
</a>&书信电报;br/>;
</xsl:for each>;
</xsl:template>;
</xsl:stylesheet>;
您可能会注意到XSL文件实际上是一个PHP文件,但在其他浏览器中效果很好,我尝试将其更改为.XSL for Chrome,但没有任何帮助。我做错了什么
这不起作用的原因是Chrome以一种有争议的方式解决了一个安全问题,即阻止XML文件访问同一目录中的本地XSLT文件,而HTML文件可以访问同一目录中的.CSS文件
Chrome团队在2008年给出的理由如下:
想象一下这个场景:
-
您收到一封来自攻击者的电子邮件,其中包含一个作为附件的网页,您可以下载该网页
-
您可以在浏览器中打开现在的本地网页
-
本地网页创建的源为https://mail.google.com/mail/.
-
由于您已登录Gmail,框架会将邮件加载到您的收件箱中
-
本地网页通过使用JavaScript访问框架[0].document.documentElement.innerHTML来读取框架的内容。(Internet网页将无法执行此步骤,因为它来自非Gmail来源;相同来源策略将导致读取失败。)
-
本地网页将收件箱中的内容放入一个文件夹中,并通过表单POST将数据提交给攻击者的web服务器。现在,攻击者拥有你的收件箱,这可能对垃圾邮件或识别盗窃有用
Gmail无法保护自己免受这次攻击
我同意这很烦人,作为修复,您有两种解决方案:
-
尝试使用
--允许从文件访问文件开关运行chrome(我自己还没有测试过这个) -
上传到主机上,一切都会好起来的