问题

在下面的代码中,AngularJS $ http 方法调用该URL,并将xsrf对象作为"请求有效负载"提交(如Chrome调试器网络选项卡中所述). jQuery $.ajax 方法执行相同的调用,但将xsrf提交为"Form Data".

如何让AngularJS提交xsrf作为表单数据而不是请求有效负载?

var url = 'http://somewhere.com/';
var xsrf = {fkey: 'xsrf key'};

$http({
    method: 'POST',
    url: url,
    data: xsrf
}).success(function () {});

$.ajax({
    type: 'POST',
    url: url,
    data: xsrf,
    dataType: 'json',
    success: function() {}
});


解决方法

以下行需要添加到传递的$ http对象:

headers: {'Content-Type': 'application/x-www-form-urlencoded'}

传递的数据应转换为网址编码字符串:

> $.param({fkey: "key"})
'fkey=key'

所以你有类似的东西:

$http({
    method: 'POST',
    url: url,
    data: $.param({fkey: "key"}),
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})

发件人: https://groups.google.com/forum/ #!msg / angular / 5nAedJ1LyO0 / 4Vj_72EZcDsJ




相关问题推荐