我已经保护具有多个用户可以访问的接口的RestFul Web服务。用户可以在适当的授权和认证之后通过https访问这些接口。我已经下载了一个RestFul Client for FireFox,我从中设置了一些自定义标题,并在正文中提供了登录凭证。我能够登录到Web服务并能够访问其他接口。RestFul Web服务返回HTTP/1.1 400错误请求
但我写了一个使用jQuery,Ajax的代码,我试图调用这个服务,但我收到了“HTTP/1.1 400 Bad Request”作为响应。以下是代码
<script type="text/javascript">
var xhr,jqXHR;
if(!xhr && typeof XMLHttpRequest != "undefined")
{
xhr = new XMLHttpRequest();
}
self.ajax = function(uri, method, data) {
var request = {
url: "https://mysite/login",
type: "Post",
// Content-Type: "application/json",
//headers: { 'My-Key': 'ACNDSDSKER$%$%$#$#$#$#$"' },
accepts: "application/json",
data: { // the parameters of the request. This should be adapted to your case
"uid": username,
"password": password
},
cache: false,
dataType: 'json',
data: JSON.stringify(data),
beforeSend: function (xhr) {
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
xhr.setRequestHeader("My-Key", btoa("ACNDSDSKER$%$%$#$#$#$#$"));
},
success:function (jqXHR) {
alert("ajax success " + jqXHR.status);
},
error: function(jqXHR) {
console.log("ajax error " + jqXHR.status);
}
};
return $.ajax(request);
首先我试图用“头”属性提供自定义的信息,但是它给出了同样的错误。 第二我用beforeSend函数试过这个,但结果是一样的。 第三我试图使用基本的HTTP协议编码登录凭据,但没有用。它给出了同样的错误。
注意: - 在休息客户端我不需要提供“授权”作为自定义标题。此外,它使用的协议是“HTTP身份验证 - OAuth协议”。
请让我知道Rest客户端提出的相同请求可以正常工作,但不能用jQuery,Ajax编写代码。
一切都在脚本标记中 – user2849371