是否可以在远程服务器上加载和解析文件?

时间:2012-04-21 08:30:05

标签: javascript same-origin-policy

是否可以使用JavaScript下载和解析来自不同域的纯文本文件?

到目前为止,我已经得到了这个fiddle,但我一直在弄清楚我做错了什么。

标记:

  <div id="clickme">Click me</div>
  <div id="result">Result: </div>

代码:

$("#clickme").click(function() {
  /* ###################################
     NOTE: im on say example.com/test.html but trying
     NOTE: to access different_domain_sample.com
   */
  var req = new XMLHttpRequest();
  var sURL = "http://www.google.com/robots.txt";

  req.open("GET", sURL, true);
  req.setRequestHeader("User-Agent", "blah/4.2");

  req.onreadystatechange = function() {
    if (req.readyState == 4) {
        $("#result").text("Result is: <pre>" + req.responseText + "</pre>");
    }
  };
  req.send(null);
});

已经回答,但有关此问题的更多信息,请访问Cross-origin resource sharing

2 个答案:

答案 0 :(得分:4)

这是因为浏览器实现了一项称为跨站点脚本防范的功能。例如,您可以在同一服务器上的php文件上执行ajax请求,并使用curl在该查询中执行目标页面。

答案 1 :(得分:3)

有三种方法可以做到这一点:

  1. 借助您域中提供的非基于浏览器的代理,该代理将代表您获取数据。您还可以使用可以绕过同源策略的插件。
  2. 围绕同源策略使用JSONP或其他类似的hackish方式。这将要求Web服务器支持JSONP。
  3. 禁用跨源策略(绝对不推荐; 非常危险