【问题标题】:Cross-site XML access using javascript without server access使用 javascript 进行跨站点 XML 访问,无需服务器访问
【发布时间】:2011-07-19 02:16:06
【问题描述】:

我之前问了一个问题,但没有正确用词,所以被忽略了。

基本上,我正在创建一个 Windows 7 小工具,它将访问来自 www.weather.gov 的 XML 数据并显示一些当前条件。

        function weat()
        {

            var url = "http://www.weather.gov/xml/current_obs/KMSY.xml";


            source.open("GET", url, false);
            source.send(null);
            info = source.responseXML;

            document.write("<table border='1'>");
            var stuff = info.getElementsByTagName("temp_f");

            document.write("<tr><td>");
            document.write(stuff);
            document.write("</tr></td>");
            document.write("</table>");

        }

基本上,我试图让这个在我的桌面上工作,但我不完全确定问题出在哪里。我仍然认为这是一个跨站点问题,因为东西打印为未定义,但我并不完全确定。如果有人可以帮助我,我已经在谷歌上搜索了大约 6 个小时的可能解决方案,我感到非常沮丧。

【问题讨论】:

  • 你试过回显stuff吗?里面有什么?

标签: javascript xml cross-server


【解决方案1】:

您要么需要服务器端代理,要么需要找到支持JSONP 的天气服务

【讨论】:

  • 代理或 JSONP 有什么帮助?
  • @Albireo,如果您在自己的域上配置了一个 Web 服务器来代理对 weather.gov 的请求,您的脚本可以从它自己的域中获取数据,从而避免了安全限制。 JSONP 通过 &lt;script&gt; 标签而不是 XHR 工作,XHR 不受跨域限制。
  • Windows 的小工具没有域,没有“同源策略”之类的东西(我这么说是出于经验,我目前有一个我创建的 Windows 7 小工具可以获取来自“外部”域的text/plain,它适用于简单的 XHR)。
  • @Albireo,啊,看来你是对的。 OP将我标记为正确。这实际上是固定的吗?
  • 嗯。我还没有完全解决这个问题,但我将其标记为正确,因为我认为这是不可能的。到目前为止,它仍然不能正常工作,但 XML 请求完全有可能不是问题
【解决方案2】:

我不熟悉小工具。但是在桌面浏览器中,恐怕Same origin policy会阻止任何跨域访问。

一个例外是在 Chromium 中,只有在命令行启动 Chromium 时设置了 --disable-web-securities 时,本地页面(file://)才能访问远程 URL。

【讨论】:

  • Windows 的小工具不强制执行同源策略(顺便说一句,没有“域”开头),它们允许对任何域的 AJAX 请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
相关资源
最近更新 更多