在下面的代码中,AngularJS $http方法调用URL,然后将xsrf对象作为“请求有效负载”提交(如Chrome调试器网络标签中所述)。jQuery $.ajax方法执行相同的调用,但是将xsrf提交为“表单数据”。
$http
$.ajax
如何使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; charset=UTF-8'}
并且传递的数据应转换为URL编码的字符串:
> $.param({fkey: "key"}) 'fkey=key'
所以你有这样的事情:
$http({ method: 'POST', url: url, data: $.param({fkey: "key"}), headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} })
发件人:https : //groups.google.com/forum/#!msg/angular/5nAedJ1LyO0/4Vj_72EZcDsJ