我正在尝试在IE9中进行跨域发布调用 以下是我的代码:
$.support.cors = true;
var data = {"userid":uid,"email":email,"password":password};
if (isIE () && isIE () <= 9) {
$.ajax({
type: 'post',
crossDomain: true,
url: postUrl,
cache:false,
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
data:data,
jsoncallback:'localJsonpCallback',
jsonp:false,
success: function (data) {
console.log(data);
},
error: function (status){
console.log(status);
$("#error").html("Incorrect E-mail Entered. Please Re-Enter Your E-mail ");
}
});
}
function localJsonpCallback(json) {
if (!json.Error) {
alert("success");
}
else {
alert(json.Message);
}
}
但是,当我查看小提琴手中的调用时,我收到 405 错误,并且请求标头显示 GET:
GET postUrl?format=json&userid=123456&email=test%40test.com&password=Password1&_=1434232587917 HTTP/1.1
为什么如果我发布一个帖子,在请求标头中显示 Get?我的调用是否有语法错误?
您的请求看起来不错,从您描述的服务器响应来看,这是服务器的"问题",HTTP 状态代码 405 表示方法错误,即服务器不允许POST
请求。但是它仍然很奇怪,它会将这些转换为GET
,但我仍然认为这是因为服务器实现,而不是您的错误。您可以尝试使用像curl
这样的工具,看看您得到什么响应标头,但如果它是服务器错误/错误,则无济于事。
如果您无法控制服务器,剩下的唯一事情就是联系所有者并要求他们允许 post 请求或发送GET
请求,尽管发送非编码的登录数据真的很糟糕。