我正在组建一个小工具,一些商业人士可以在他们的本地文件系统上运行,因为我们不想为它设置主机。

基本上,它只使用HTML + Javascript(使用jQuery)从第三方使用REST提取一些报告。

问题是,FF3和IE不允许ajax调用,我得到:

Access to restricted URI denied" code: "1012

显然它是一个XSS问题......我该如何解决它?返回的数据是XML格式。

我试图这样做:

$.get(productUrl, function (data){
    alert (data);
});

编辑:要清楚......我没有为此设置一个内部主机(通过大量繁文缛节),由于数据被检索,我们无法在外部托管。

编辑#2 :一点点测试表明我可以使用IFRAME发出请求。有谁知道使用隐藏的IFRAME是否有任何缺点?

有帮助吗?

解决方案

在类似的情况下,我的解决方案是使用Mark Of The Web,这是IE认可的特殊HTML注释。它将页面放在不同的安全区域中。

参考: MSDN

其他提示

如果安装了Python,则提供文件的网络服务器就像

一样简单
python -c “import SimpleHTTPServer;SimpleHTTPServer.test()”

编辑:原始海报不能使用此方法,但总的来说,我认为这是解决此问题的未来用户遇到此问题的方法。

您是否控制提供数据的服务器?如果是这样,您可以设置回调。基本思想是在脚本中有一个处理传入数据的函数(在您的情况下是一个XML字符串)。然后,服务器使用您的回调函数的JavaScript代码段以字符串作为参数来响应请求。而不是使用AJAX,您向页面添加新的脚本标记。这是JSONP的基础。它看起来像这样。

本地页面。

<script>
    function callback(str) {
        alert(str);
    }
    function makeRequest(param) {
        var s = document.createElement('script');
        s.src = 'http://serveranywhere/script.bla?' + params;
        document.getElementsByTagName[0].appendChild(s);
    }
</script>

远程服务器返回

callback('<xml><that><does><something></something></does></that></xml>');

现在当脚本添加到页面时,函数回调将执行您提供的字符串。并且jQuery调用在$ .ajax调用中使用JSONP为您完成所有这些操作。希望这会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top