XSL无法在Google Chrome中使用

Nat*_*ate 19 xml xslt google-chrome

我已经看到很多关于这个的帖子......但是我不能,因为我的生活,弄清楚我的问题是什么!当我尝试使用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>
Run Code Online (Sandbox Code Playgroud)

...然后链接的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:value-of select="@url" />
        </xsl:attribute>
        <xsl:value-of select="@name" />
    </a><br />
  </xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

您可能会注意到XSL文件实际上是一个PHP文件,但这在其他浏览器中工作正常,我尝试将其更改为.xsl for Chrome,但它没有帮助.我在这里做错了什么?

Pac*_*ier 16

这不起作用的原因是由于Chrome以一种有争议的方式[1] [2] [3] [4]解决了安全问题,阻止XML文件访问同一目录中的本地XSLT文件,而HTML文件可以访问同一目录中的.CSS文件就好了.

2008年被Chrome团队给出的理由是这样:


想象一下这种情况:

  1. 您收到来自攻击者的电子邮件,其中包含您下载的附件网页.

  2. 您可以在浏览器中打开现在本地的网页.

  3. 本地网页的源代码为https://mail.google.com/mail/.

  4. 由于您已登录Gmail,因此框架会在收件箱中加载邮件.

  5. 本地网页使用JavaScript访问框架[0] .document.documentElement.innerHTML来读取框架的内容.(Internet网页无法执行此步骤,因为它来自非Gmail来源;同源策略会导致读取失败.)

  6. 本地网页将收件箱的内容放入a并通过表单POST将数据提交给攻击者的Web服务器.现在,攻击者拥有您的收件箱,这可能对垃圾邮件或识别盗窃有用.

Gmail可以做些什么来防御这种攻击.


我同意这很烦人,作为修复你有2个解决方案:

  1. 尝试用--allow-file-access-from-files开关运行chrome (我自己没有测试过)

  2. 上传到主机,一切都会好的.

  • `--allow-file-access-from-files`似乎在这种情况下没有任何影响. (2认同)

jmj*_*rri 5

上传到主机soves问题对我来说.--allow-file-access-from-files开关解决方案对我不起作用.