400错误请求仅使用AngularJs,与jQuery一起使用

400 Bad Request only using AngularJs, works with jQuery

本文关键字:jQuery 一起 AngularJs 错误 请求      更新时间:2023-09-26

我在为特定的"PUT"Ajax请求(RESTFul服务)使用AngularJs时遇到问题。

同一段代码适用于jQuery和纯JavaScript。

$http({
    method: "PUT",
    url: "https://XXXXXXXXXXXXXX/api.php?rquest=updateUuid",
    headers: {
        "Content-type": "text/plain",
        Authorization: "Basic " + btoa(email + ":" + password)
    },
    data: {
        Email: email,
        Uuid: login_response.uuid
    }
}).success(function(response) {
    console.log(response);
});

jQuery.ajax({
    method: "PUT",
    url: "https://XXXXXXXXXXXXXX/api.php?rquest=updateUuid",
    headers: {
        "Content-type": "text/plain",
        Authorization: "Basic " + btoa(email + ":" + password)
    },
    data: {
        Email: email,
        Uuid: login_response.uuid
    }
}).done(function(response){
    console.log(response)
});

服务器使用JSON对象进行响应,但第一个代码(AngularJs)的工作方式似乎有点不同。之前,我没有设置Content-Type标头,并且遇到了CORS问题(使用jQuery,但AngularJs将内容类型设置为"application/json"并导致错误)。

第一部分修复了将内容类型设置为text/plain的问题,但现在我得到了400 Bad Request Error(仅使用AngularJs)。我还尝试使用拦截器删除transformRequest,但没有成功。

我用错AngularJs了吗?因为我认为,取消jQuery的链接,是在后台做额外的"事情",制作一些额外的头,或者没有正确传递数据。

通常,当我没有将任何数据传递给RESTful服务时,我会收到这个错误。

我正在学习AngularJs,所以我宁愿用它来代替jQuery。任何帮助都将不胜感激。

非常感谢

我得到了它,jQuery正在自动将数据对象序列化为application/x-www-form-urlencoded,AngularJs没有。。。

工作代码:

$http({
    method: "PUT",
    url: "https://XXXXXXXXXXXXXX/api.php?rquest=updateUuid",
    headers: {
        Accept: "*/*",
        "Content-Type": "application/x-www-form-urlencoded",
        Authorization: "Basic " + btoa(email + ":" + password)
    },
    data: jQuery.param({
        Email: email,
        Uuid: login_response.uuid
    })
})

不管怎么说,这看起来不太好,但至少起作用了。。有人知道让AngularJs以x-www-form-urlencoded的形式发送序列化数据的更好方法吗?