在没有传递任何数据参数时,我在jQuery中遇到了PUT和POST ajax CORS请求的奇怪问题。
所以我通过设置标头在我的服务器上启用了CORS。例如,当我这样做时,一切正常:
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT",
data: {foo:"bar"}
});
但是,当我在没有设置data
参数的情况下执行相同的请求时,firefox会在没有发布ajax的情况下返回:
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT"
});
请注意,这仅适用于POST和PUT方法,当在请求中指定了完整URL时,并且未指定http数据参数。当url与页面本身位于同一域时也会发生这种情况(因此不需要CORS)。如果我只是在url中指定路径而不是完整的url,则不会发生这种情况。
任何线索如何在不传递任何参数的情况下进行POST / PUT(我的服务器不接受'假'参数)。
答案 0 :(得分:5)
我很确定现在它是jQuery中的一个错误,当它在没有数据发布的情况下在跨域ajax请求中调用'multipart / form-data'编码器时。
可以通过使用以下内容来避免:
if(jQuery.isEmptyObject(mydata)){
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT",
contentType: 'application/x-www-form-urlencoded'
});
} else {
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT",
data: mydata
});
}