2012-04-21 36 views
3

是否有可能下载并解析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

无法通过JavaScript发送跨域请求。 – Blender 2012-04-21 08:35:26

+0

而这是一件好事:) – 2012-04-21 08:36:52

+0

@Blender和java的applets有相同的限制吗?我可以“签名”代码或询问用户他是否信任代码,因此可以跨域访问文件或类似的东西? – lzdt 2012-04-21 08:37:35

回答

3

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

  1. 在非浏览的帮助下基于r的代理服务器将从您的域中提供,它将以您的名义获取数据。您也可以使用可绕过同源策略的插件。
  2. 使用JSONP或其他类似的方式围绕同源策略。这需要Web服务器支持JSONP。
  3. 禁用跨域策略(绝对不推荐; 非常危险
+1

呃,好吧,明白了:http://en.wikipedia.org/wiki/Same_origin_policy#Workarounds非常感谢! – lzdt 2012-04-21 08:47:41

4

这是因为浏览器已经实现了一个名为跨站点脚本的预防功能。例如,你可以做在同一台服务器使用curl目标页面上,并在该查询的PHP文件Ajax请求。

+0

就像我会写的一样。 – 2012-04-21 08:39:29

相关问题