2013-12-18 144 views
0

我已经保护具有多个用户可以访问的接口的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编写代码。

回答

0

您发布的代码有点令人困惑。您的第二部分不在<script></script>元素之外。这只是一个复制/粘贴错误?否则,将您的代码放在<script></script>标签中,然后重新打开。

+0

一切都在脚本标记中 – user2849371

相关问题