我上周开了另一篇帖子,因为我的弹性搜索没有返回准确的结果,请参阅ElasticSearch post
基本上发生的事情是,当我使用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请求发送?
答案 0 :(得分:2)
您无法使用POST对其他域或同一域进行JSONP调用,因为JSONP的工作原理是向页面添加脚本标记。它没有制作XMLHttpRequest。
如果你想发布数据并且它是同一个域,只需对服务器进行正常的POST ajax调用并返回JSON。
如果是跨域调用:如果您控制其他域而您只关心现代浏览器,则可以使用CORS,否则,您必须在服务器上使用代理才能使用发布请求。这两种解决方案都可以进行JSON调用,而不是JSONP。