我正在使用jQuery的$ .ajax使用JSONP向第三方服务器发出请求。我将方法指定为POST,但它仍然使用GET:
$.ajax({
type: "POST",
dataType: "json",
url: other_server + "/run?callback=?",
data: {
code: $(code).val()
},
success: function(obj) {
var res = obj.results;
$(results).val(res);
}
});
查看jQuery源代码,我看到这两行似乎强制所有跨域请求都要GET,但我不明白为什么需要这样:
if ( s.crossDomain ) {
s.type = "GET";
是否可以使用POST而不是GET执行此操作?为什么jQuery强制使用GET?
答案 0 :(得分:5)
JSON-P通过在文档中插入<script>
元素来工作,因此它只能发出GET请求。
如果要向远程服务器发出POST请求,则需要查看XHR并设置CORS权限。请注意,这有limited browser support。
或者,将您的请求保持为相同的来源(并让您的服务器向远程服务器发出请求)。