3

我正在整理一些业务人员可以在他们的本地文件系统上运行的小工具,因为我们不想为它设置主机。

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

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

Access to restricted URI denied" code: "1012

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

我试图这样做:

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

编辑:要明确...我没有为此设置内部主机(太多繁文缛节),并且由于正在检索数据,我们不能在外部托管它。

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

4

3 回答 3

2

在类似的情况下,我的解决方案是使用 Web 标记,这是 IE 识别的特殊 HTML 注释。它将页面放置在不同的安全区域中。

参考:MSDN

于 2008-10-03T00:06:05.447 回答
-1

如果您安装了 Python,则提供文件的网络服务器可以很简单

python -c “import SimpleHTTPServer;SimpleHTTPServer.test()”

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

于 2008-10-02T18:50:13.333 回答
-1

您是否控制提供数据的服务器?如果是这样,您可以设置回调。基本思想是您在脚本中有一个处理传入数据的函数(在您的情况下是一个 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 为您完成所有这些工作。希望这可以帮助。

于 2008-10-03T12:02:07.247 回答