我正在使用登录网络服务来验证用户。
这些是 spring 3.0 REST Web 服务,其设计方式是只接受带有 POST 方法的数据。
我能够使用 GET 将数据发送到 Web 服务。
但是由于网络服务的实现,我必须使用 POST 方法提交数据。
如果我使用带有 POST 的 jquery ajax 请求,我会收到 403 Access disabled 错误。
下面是 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 { }
}
});
}
请建议。