Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS发送表单数据_Angularjs_Json_Authentication_Curl_Form Authentication - Fatal编程技术网

AngularJS发送表单数据

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

我正在尝试发送带有表单数据的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.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
我已将其添加到问题中