1

我上周打开了另一个帖子,因为我的弹性搜索没有返回准确的结果,请参阅ElasticSearch 帖子

基本上发生的事情是,当我使用 jsonp 时,请求实际上并没有作为 GET 请求而不是 POST 请求发送。下面是jsonp请求。当我使用 json 时,它实际上是作为 POST 发送的。

   amplify.request.define("searchPostRequest", "ajax", {
        url: "http://leServer:9200/people/person/_search",
        type: "POST",
        dataType: 'jsonp',
        contentType: 'application/json'
    });

任何人都知道如何强制将 jsonp 作为 POST 请求发送?

4

1 回答 1

2

您不能使用 POST 对不同域或相同域进行 JSONP 调用,因为 JSONP 通过向页面添加脚本标签来工作。它没有发出 XMLHttpRequest。

如果要发布数据并且它是同一个域,只需对服务器进行普通的 POST ajax 调用并返回 JSON。

如果是跨域调用:如果您控制另一个域并且只关心现代浏览器,则可以使用CORS,如果不是,则必须使用服务器上的代理来发出 post 请求。这两种解决方案也将进行 JSON 调用,而不是 JSONP。

于 2013-01-22T14:19:16.427 回答