当参数很长时,获得411长度所需的错误

时间:2015-06-03 08:26:16

标签: java angularjs google-app-engine

我正在使用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”

所以基本上,如果我设置内容长度,浏览器拒绝执行调用,如果我没有设置它,那么服务器说它是必需的......我该怎么办?

1 个答案:

答案 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) {

});