Jer*_*oen 1 ajax jquery cross-domain cors
在没有传递任何数据参数的情况下,我遇到了jQuery中的PUT和POST ajax CORS请求的奇怪问题.
所以我通过设置标头在我的服务器上启用了CORS.例如,当我这样做时,一切正常:
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT",
data: {foo:"bar"}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我在没有设置data参数的情况下执行相同的请求时,firefox会返回而不会发布ajax:
$.ajax({
url: "http://127.0.0.1/R/index.html",
type: "PUT"
});
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于POST和PUT方法,当在请求中指定了完整URL时,并且未指定http数据参数.当url与页面本身位于同一域时也会发生这种情况(因此不需要CORS).如果我只是在url中指定路径而不是完整的url,则不会发生这种情况.
任何线索如何在不传递任何参数的情况下进行POST/PUT(我的服务器不接受'假'参数).
我很确定现在它是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
});
}
Run Code Online (Sandbox Code Playgroud)