【问题标题】:AJAX calls from local javascript code to remote server从本地 javascript 代码到远程服务器的 AJAX 调用
【发布时间】:2011-08-04 15:36:57
【问题描述】:

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

我想是某些浏览器的安全设置,但找不到。

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

谢谢。

代码sn-p:

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>

我获得了“成功”,但数据为空。

【问题讨论】:

  • 请详细说明,如果 domain:8080 是您的服务器?即您可以配置的那个
  • 是的,但我想没有任何服务器端更改(例如 JSONP)的答案。
  • 不需要任何设置..请发布您的代码,以便我们为您提供帮助...
  • Kishan,我在帖子中添加了代码 sn-p。

标签: javascript ajax xss


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

  • 您好 zindel,您能否具体说明应该如何配置 Apache 以便能够使用 AJAX 从本地文件访问由它提供的内容?
【解决方案2】:

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

【讨论】:

  • 我想没有任何服务器端更改(例如JSONP)的答案。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多