繁体   English   中英

AngularJS无法使用Content-Type:application / json发送post请求

[英]AngularJS can't send post request with Content-Type:application/json

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

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

但是当我调用它时,它只是发送'OPTIONS'请求而不是POST请求。
请求详细信息是: 在此输入图像描述 如果我为此方法添加标头,

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)

它仍然不起作用,但如果我将标题更改为'Content-Type':'application / x-www-form-urlencoded' ,那么它可以发送帖子请求。
但请求内容类型并不是我想要的。

我还尝试通过以下方法将请求数据修改为JSON: data:JSON.stringify(user) ,但仍然无效。

更新

伙计们,我在这个问题上再次飙升。 我发送请求是jquery,它工作正常,但我发现有线的事情是他们有不同的请求数据。

jQuery的

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

  }

Jquery的屏幕截图 在此输入图像描述

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的屏幕截图 在此输入图像描述

所以我认为问题可能是由于角度请求数据的格式。

您正在达到CORS限制和相同的原始政策。

最简单的解决方案是将Web前端和api一起部署为一个应用程序。 如果即使在同一台机器上端口也不同,那么需要处理相同的源策略。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM