目前我正在使用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',那么它可以发送帖子请求。
但请求Content-type并不是我想要的。
我还尝试通过以下方式将请求数据修改为JSON:数据:JSON.stringify(用户),但仍无效。
更新
伙计们,我在这个问题上再次飙升。我发送请求是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的屏幕截图
所以我认为这个问题可能是由于角度请求数据的格式造成的。
答案 0 :(得分:1)
您正在达到CORS限制和相同的原始政策。
最简单的解决方案是将Web前端和api一起部署为一个应用程序。如果即使在同一台机器上端口也不同,那么就需要处理相同的原始策略。
选项是预检查询。让你的后端接受它,它应该没问题。