我正在使用Angular JS对在Google App Engine上运行的Java servlet执行POST请求。代码工作正常,不幸的是我注意到如果一个(或多个)参数很长,我会收到以下错误:
错误:需要长度
POST请求需要Content-length标头。
这是我的Angular JS代码:
app.controller('mycontroller', ['$scope', '$http', '$log', function($scope,$http,$log) {
this.myfunction = function() {
$http({
method: 'POST',
url: '/myservlet',
params: { method: 'my_method', param1 : $("#param1").val(), param 2: ... }
}).success(function(data) {
}).error(function(data) {
});
};
}
Param1,param2等是不同的领域,但大多数是textarea。有什么建议吗?老实说,我不知道该怎么做。
编辑:我自己尝试在标题中设置内容长度,但是我收到错误,因为我预期......
headers : { 'Content-Length' : 0 },
拒绝设置不安全的标题“Content-Length”
所以基本上,如果我设置内容长度,浏览器拒绝执行调用,如果我没有设置它,那么服务器说它是必需的......我该怎么办?
答案 0 :(得分:1)
您正在使用的params
参数用于将GET变量作为网址的一部分传递,即使method
是POST($http docs)也是如此。要在POST请求的主体中传递信息,您必须使用data
参数。
所以,你的要求应该是:
$http({
method: 'POST',
url: '/myservlet',
data: { method: 'my_method', param1 : $("#param1").val(), param 2: ... }
}).success(function(data) {
}).error(function(data) {
});