是否可以从本地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>
我获得了“成功”但是数据空洞。
答案 0 :(得分:3)
不幸的是,没有其他方法可以使用以下两种方法之一:如前面的答案中所述的JSONP或CORS。两者都需要服务器端更改。如果您需要较旧的浏览器支持,JSONP会更好,但CORS显然更清晰,可能不需要更改服务器端脚本,修改服务器配置就足够了。
希望这有帮助。
答案 1 :(得分:0)
在您传递给ajax的网址末尾添加callback=?
答案 2 :(得分:0)
JSONP是要走的路。如果您正在访问第三方API,希望它已经支持它。如果它是您自己的API,您可能必须自己添加对它的支持。您可能会发现此相关问题有助于您获得一些背景资料:What is JSONP all about?