3

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

到目前为止,我已经掌握了这个小提琴,但我一直在弄清楚我做错了什么。

标记:

  <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);
});

已经回答,但更多信息在这里跨域资源共享

4

2 回答 2

4

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

于 2012-04-21T08:38:24.070 回答
3

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

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