我正在使用登录Web服务来验证用户。如何使用crossdomain ajax请求发布数据?
这些是Spring 3.0中的其他web服务,其设计方式是只接受POST方法的数据。
我能够使用GET将数据发送到Web服务。
但由于web服务的实现,我必须使用POST方法提交数据。
如果我使用jQuery的ajax请求与POST我得到403访问禁止的错误。
下面是GET请求的工作示例。
我对tomcat使用CORS过滤器来启用CORS支持。
function callservice()
{
jQuery.support.cors = true;
var mobNo = document.getElementById('mobileNo').value;
var acctNo = document.getElementById('accountNo').value;
var custNo = document.getElementById('customerId').value;
url = url+mobNo+"/"+acctNo+"/"+custNo;
$.getJSON(url,
function(data)
{
if (data.authenticated==true)
{
alert("data "+data);
}
});
}
但是,如果我使用下面的代码,我得到403错误。
function callservice()
{
jQuery.support.cors = true;
var mobNo = "123123123";
var acctNo = "123123123";
var custNo = "123123123";
var url = "http://localhost/mobile-services/rest/user/";
var dataVal = {};
dataVal["mobileNo"] = mobNo;
dataVal["accountNo"] = acctNo;
dataVal["customerId"] = custNo;
var forminput = JSON.stringify(dataVal);
$.ajax({
url: url,
type: "POST",
data:forminput,
datatype:"jsonp",
crossDomain: true,
contentType: "application/json",
beforeSend: function() { },
headers :
{
"Content-Type" : "application/json",
"Accept" : "application/json",
"Origin" : "http://localhost/",
"Access-Control-Allow-Origin" : "*"
},
success: function (data)
{
if (data.authenticated==true)
{
window.location.replace("http://localhost:8080/mobile-services/selected_services.jsp?userId="+data.id);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
try
{
alert(JSON.stringify(XMLHttpRequest) + "\n" + textStatus + "\n" + errorThrown);
}
catch (ex) { alert("Exception occured.. "); }
finally { }
}
});
}
请建议。
这是否帮助:: http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via- javascript – 2012-07-05 11:54:20