RestFul Web服务返回HTTP / 1.1 400错误请求

时间:2013-12-18 07:09:13

标签: jquery ajax rest

我已经保护了RestFul Web服务,它有几个用户可以访问的界面。用户可以在适当的授权和身份验证之后访问这些接口,即通过https。我已经为FireFox下载了一个RestFul客户端,我正在设置一些自定义标头,并且在正文中我提供了登录凭据。我能够登录Web服务并能够访问其他接口。

但我正在使用jQuery编写代码,Ajax通过我试图调用此服务,但我收到“HTTP / 1.1 400错误请求”作为响应。以下是代码

<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);

首先,我尝试使用“headers”属性提供自定义标头,但它会出现相同的错误。 其次我用beforeSend函数尝试了这个,但结果是一样的。 第三,我尝试使用基本HTTP协议对登录凭据进行编码,但没有用。它给出了同样的错误。

注意: - 在Rest Client中,我不需要提供“授权”作为自定义标头。它使用的协议还有“HTTP身份验证 - OAuth协议”。

请让我知道Rest Client的相同请求可以正常工作的原因,但不能使用jQuery,Ajax编写的代码。

1 个答案:

答案 0 :(得分:0)

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