【问题标题】:Ajax request to GAE not working?对 GAE 的 Ajax 请求不起作用?
【发布时间】:2014-05-12 04:25:24
【问题描述】:

我有一个 GAE 应用程序,它接受 JSON 请求并在响应中使用 JSON 进行回复。我知道它可以工作,因为我有一个可以使用它的 Android 应用程序。我也在尝试建立一个基于 JavaScript 浏览器的界面。为此,我试图通过 JQuery 从托管在不同 GAE 域上的页面发送请求。但是,据我所知,根本没有发送 ajax。

<!DOCTYPE html>
<html>
<head>
<script>
    function loadXMLDoc() {

        alert("before ajax.....");

            $.ajax({
                  type: "POST",
                  url: "CORRECT URL HERE",
                  data: {
                      type:"GAMES_LIST"
                  },
                  jsonpCallback: function(){
                      alert("success");
                  },
                  async: false,
                  crossDomain : true,
                  dataType: 'jsonp'
                });


            alert("after ajax...");

    }


</script>
</head>
<body onLoad="loadXMLDoc()">

    <div id="myDiv"></div>

</body>
</html>

仅触发第一个“在 ajax 之前”警报。

有人知道我做错了什么吗?

【问题讨论】:

  • 您是否检查过您的浏览器调试工具(尤其是网络部分)?它可以提供一些提示。
  • 我认为 Peter Hudec 是对的。显然没有办法将 jsonp 与 POST 请求一起使用,只有 GET。有谁知道如何使用 CORS 配置 GAE 以绕过同源策略?
  • @yedidyak,是的,jsonp 不适用于 POST 请求。原因如下:stackoverflow.com/questions/2699277/post-data-to-jsonp

标签: javascript jquery ajax google-app-engine jsonp


【解决方案1】:

通过向其他域发出 AJAX 请求,您违反了Same-origin policy

如果您有权访问 JSON 端点,则可以在 Access-Control-Allow-Origin HTTP 标头中允许特定域访问您的端点。

如果您无权访问端点,例如它是第三方提供商,如果提供商支持,您可以提出JSONP 请求。

【讨论】:

  • 我在响应的 GAE 应用程序的响应中添加了标题。终于成功了。
猜你喜欢
  • 2013-09-21
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 2015-12-21
  • 2012-11-28
  • 2014-12-28
相关资源
最近更新 更多