如何在远程服务器上使用XSL呈现本地XML文件

3

在我的应用程序中,我使用XSLT来呈现XML文件。

当客户端有xsl文件时,这种方法可以正常运行:

<?xml-stylesheet type="text/xsl" href="..\XSL\test.xsl"?>

但是当我试图在我的服务器上使用xsl文件用于XML文件时,比如:

<?xml-stylesheet type="text/xsl" href="http://www.mysite.com/xsl/test.xsl"?>

这并不起作用。看起来像是一种安全限制,但是否有办法使用远程服务器上的远程XSL渲染本地XML文件?


when clients have xsl files” 是什么意思?您是通过 http:// 还是 file:// 打开 XML 文件的? - Nils Werner
2个回答

1
你所看到的“安全限制”被称为同源策略。这意味着你的XSLT样式表必须来自于加载XML的同一台服务器。
如果你的XML来自于具有脚本功能的服务器,例如PHP等,那么你可以通过创建代理脚本来规避此问题。该脚本将加载远程XSL文件并使其看起来像是本地文件:
<?php
header('Content-type: text/xsl');
echo file_get_contents('http://www.mysite.com/xsl/test.xsl');
?>

1
客户从 WCF 应用程序获取 XML 文件,因此他们将其作为文件从文件夹中打开。由于这个原因,不幸的是它们不在同一起源。 - fcaglayan

1
在IE11中,仍然有一个解决方法。您应该前往“Internet选项->安全性->本地互联网->自定义级别->杂项->跨域访问数据源”,并将其设置为“启用”或“提示”(建议选择最后一项,以便您仍然对此具有一定的控制)。这将使远程xsl加载/处理本地xml成为可能。

4
在这种情况下,我不认为一个只针对IE11的解决方案真的有帮助;而且要求所有用户更改安全设置的解决方案也不可取。 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接