AngularJS发送表单数据
我正在尝试发送带有表单数据的POST请求 在AngularJS发送表单数据,angularjs,json,authentication,curl,form-authentication,Angularjs,Json,Authentication,Curl,Form Authentication,我正在尝试发送带有表单数据的POST请求 在$resource()上使用.save(data)http://localhost:5000/api/auth');-对象发送以下对应的cURL字符串(使用Chrome提取): curl'http://localhost:5000/api/auth“-H”Pragma:无缓存“-H”原点:http://localhost:63342'-H'接受编码:gzip,deflate'-H'接受语言:da-DK,da;q=0.8,在美国;q=0.6,en;q=0
$resource()上使用.save(data)
http://localhost:5000/api/auth');代码>-对象发送以下对应的cURL字符串(使用Chrome提取):
curl'http://localhost:5000/api/auth“-H”Pragma:无缓存“-H”原点:http://localhost:63342'-H'接受编码:gzip,deflate'-H'接受语言:da-DK,da;q=0.8,在美国;q=0.6,en;q=0.4'-H'用户代理:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/46.0.2490.80 Safari/537.36'-H'内容类型:application/json;charset=UTF-8'-H'Accept:application/json,text/plain,*/*'-H'缓存控制:无缓存'-H'引用:http://localhost:63342/public_html/app/index.html'-H'连接:保持活动状态'-H'X-FireHP-Version:0.0.6'-数据二进制'{“用户名”:“管理员”,“密码”:“mypass”}'-压缩
我的API不获取任何表单数据。但是,当我使用curl-xpost--data“username=engel&password=mypass”时http://localhost:5000/api/auth
MyAPI返回200成功
如何使用$resource
发布与工作请求类似的请求
API允许回复允许的访问控制允许来源
编辑
我使用以下工厂:
factory('AuthResource', ['$resource', function($resource) {
return $resource('http://localhost:5000/api/auth');
}]);
然后我把它叫做
var login = AuthResource.save(user);
如果用户是具有
用户名
和密码
的dict,则使用$resource
服务发送标准POST请求。这意味着它将把您的用户名
和密码
作为请求主体中的JSON对象发送
您执行的CURL请求将数据作为url编码的表单数据发送。这也是API所期望的
如果要在angular中执行相同的操作,则必须告诉$resource
也将其作为表单数据发送
只需通过向$resource
服务添加新方法来更新您的工厂:
factory('AuthResource', ['$resource', function($resource) {
return $resource(
'http://localhost:5000/api/auth',
{},
{
login: {
method: 'POST',
headers: {
'Content-type': 'application/x-www-form-urlencoded'
}
tranformRequest: function (data, headersGetter) {
var str = [];
for (var d in data) {
str.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));
}
return str.join("&");
}
}
}
);
}]);
此自定义方法发送正确的头,但也会将带有凭据的JSON对象转换为url编码的字符串
然后,您可以使用此新方法通过api进行身份验证:
var login = AuthResource.login(user);
在调用
之前,您是否可以发布如何使用$resource
服务。save
我已将其添加到问题中