为了账号安全,请及时绑定邮箱和手机立即绑定

如何使XSLT在Chrome中工作?

/ 猿问

如何使XSLT在Chrome中工作?

MMMHUHU 2019-10-09 15:58:20

我这里有一个XML文档,该文档带有相应的XSL文件。转换留给客户端执行,无需JavaScript。


在IE(令人震惊的恐怖)中,此方法工作正常,但在Google Chrome中,仅显示文档的文本节点。


正如我所看到的例子,我知道可以在Chrome中执行客户端XSL,但我还无法自己复制这种成功。


我究竟做错了什么?


查看完整描述

3 回答

?
繁华开满天机

埃里克(Eric)下面的另一个答案是错误的。他提到的名称空间声明与该问题无关。

它不起作用的真正原因是出于安全考虑(请参阅问题4197,问题111905)。

想象一下这种情况:

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

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

  3. 本地网页会创建<iframe>其来源为https://mail.google.com/mail/。

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

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

  6. 本地网页将收件箱中的内容放入,<textarea>然后通过POST表单将数据提交到攻击者的Web服务器。现在,攻击者有了您的收件箱,这对于垃圾邮件发送或识别盗窃很有用。

Chrome通过限制使用Chrome打开的本地文件来阻止上述情况。为了克服这些限制,我们有两种解决方案:

  1. 尝试运行带有--allow-file-access-from-files 标志的Chrome 。我自己尚未对此进行测试,但是如果它可以运行,那么您的系统现在也容易受到上述那种情况的攻击。

  2. 将其上传到主机,问题解决。


查看完整回答
反对 回复 2019-10-09
?
幕布斯5086720

在撰写本文时,Chrome中存在一个bug,该bug需要一个xmlns属性才能触发渲染:


<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" ... >

这是从服务器提供xml文件时遇到的问题。


如果与我不同,您正在从file:///url查看xml文件,那么提到的解决方案--allow-file-access-from-files就是您想要的解决方案


查看完整回答
反对 回复 2019-10-09
?
桃花长相依

我在本地主机上遇到了同样的问题。在Internet上奔跑寻找答案,我赞成这种添加--allow-file-access-from-files方式。我在Mac上工作,所以对我来说,我必须通过终端sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --allow-file-access-from-files输入密码(如果有的话)。


另一件事-除非您按如下方式将对.xsl文件的引用添加到.xml文件中,否则将不起作用<?xml-stylesheet type="text/xsl" href="<path to file>"?>。我没有立即意识到的另一件事-您应该在浏览器中打开.xml文件,而不是.xsl。


查看完整回答
反对 回复 2019-10-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信