gpt4 book ai didi

javascript - AngularJS 无法发送内容类型为 :application/json 的发布请求

转载 作者:行者123 更新时间:2023-11-29 15:39:44 24 4
gpt4 key购买 nike

目前我正在使用 angularJS 和 CoffeeScript 尝试发送一个 post 请求,我的示例代码是:

login: (user, callback)=>
baseUrl = 'http://localhost:3000/api/v1/sessions'
@$http({
method: 'POST',
url: baseUrl,
data: user
}).success (result)->
callback(result)

但是当我调用它时,它只是发送“OPTIONS”请求而不是 POST 请求。
请求详细信息是: enter image description here如果我向此方法添加 header ,

login: (user, callback)=>
baseUrl = 'http://localhost:3000/api/v1/sessions'
@$http({
method: 'POST',
url: baseUrl,
data: user,
headers:
'Content-Type': 'application/json'
}).success (result)->
callback(result)

它仍然不起作用,但如果我将 header 更改为 'Content-Type': 'application/x-www-form-urlencoded',那么它可以发送 post 请求。
但是请求的Content-type不是我想要的。

我也尝试通过data: JSON.stringify(user)将请求数据修改为JSON,但还是不行。

更新

伙计们,我在这个问题上又做了一次秒杀。这是我发送请求的 jquery,它工作正常,但我发现有线的东西是它们有不同的请求数据。

Jquery

$.ajax({
type: "POST",
url: "http://localhost:3000/api/v1/sessions",
data: {
"user":{
"email":"wahxxx@gmail.com",
"password":"123456"
}
},
success: function(){

}

Jquery 的屏幕截图 enter image description here

Angular

login: (user, callback)=>
baseUrl = 'http://localhost:3000/api/v1/sessions'
@$http({
method: 'POST',
url: baseUrl,
data: {
"user":{
"email":"wahxxx@gmail.com",
"password":"123456"
}
},
headers:
'Content-Type': 'application/x-www-form-urlencoded'
}).success (result)->
callback(result)

现在它可以发送请求了,但是我在尝试发送请求时得到了 401。
Angular 的屏幕截图 enter image description here

所以我认为这个问题可能是由于 Angular 请求数据的格式引起的。

最佳答案

您正在达到 CORS 限制和同源策略。

最简单的解决方案是将 Web 前端和 API 作为一个应用程序一起部署。如果同一台机器上的端口不同,则需要处理同源策略。

选项是预检查询。让您的后端接受它,它应该没问题。

更多阅读: http://www.html5rocks.com/en/tutorials/cors/

关于javascript - AngularJS 无法发送内容类型为 :application/json 的发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21400743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com