AJAX从本地javascript代码调用到远程服务器

时间:2011-04-13 11:42:29

标签: javascript ajax xss

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

我认为这是浏览器的一些安全设置,但无法找到哪些设置。

假设有一个没有任何服务器端更改的答案(例如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>

我获得了“成功”但是数据空洞。

3 个答案:

答案 0 :(得分:3)

不幸的是,没有其他方法可以使用以下两种方法之一:如前面的答案中所述的JSONP或CORS。两者都需要服务器端更改。如果您需要较旧的浏览器支持,JSONP会更好,但CORS显然更清晰,可能不需要更改服务器端脚本,修改服务器配置就足够了。

希望这有帮助。

答案 1 :(得分:0)

在您传递给ajax的网址末尾添加callback=?

答案 2 :(得分:0)

JSONP是要走的路。如果您正在访问第三方API,希望它已经支持它。如果它是您自己的API,您可能必须自己添加对它的支持。您可能会发现此相关问题有助于您获得一些背景资料:What is JSONP all about?