2011-04-13 78 views
2

是否可以从本地html/js文件(例如file://home/a.html)向远程进行AJAX调用(例如使用jQuery.ajax())服务器(例如http://domain:8080/api)?如果是,如何启用这种XSS(例如在FF3中)?从本地javascript代码到远程服务器的AJAX调用

我想这是一些浏览器的安全设置,但找不到哪一个。

并假设没有任何服务器端更改(如JSONP)的答案。

谢谢。

代码片段:

function foo(){ 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost:8080/api", 
      data: "Hello world", 
      success: function (data, textStatus, XMLHttpRequest) { 
       alert(data); 
       alert("success!"); 
      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
       alert("fail"); 
      } 
     }); 
    } 

... 
... 

<button onclick="foo()">click me</button> 

我得到的 “成功”,但空的数据。

+1

请详细说明,如果域名:8080是你的服务器?即你可以配置 – zindel 2011-04-13 11:44:19

+0

是的,但我想没有任何服务器端更改(如JSONP)就有答案。 – 2011-04-13 11:46:12

+1

没有任何设置required..please发布您的代码,所以我们可以帮助您... – 2011-04-13 11:47:41

回答

3

不幸的是,除了使用2种方法之一之外,没有其他方法可以使用JSONP或CORS。两者都需要服务器端的更改。如果您需要旧版浏览器的支持,JSONP会更好,但是CORS显然更清晰并且可能不需要更改服务器端脚本,修改服务器配置应该足够了。

希望这会有所帮助。

+1

嗨zindel,你能指定一个人应该如何配置Apache才能够使用AJAX从本地文件访问它提供的内容? – YakovL 2016-04-15 08:16:56

0

上,你传递给阿贾克斯

+0

我想有没有任何服务器端更改(如JSONP)的答案。 – 2011-04-13 11:59:21

0

JSONP是要走的路在您的网址的末尾添加callback=?。如果您正在访问第三方API,希望它已经可以支持它。如果它是你自己的API,你可能必须自己添加对它的支持。您可能会发现这个相关的问题可以帮助您获得一些背景:What is JSONP all about?

相关问题