JS FileTransfert返回Http 411

时间:2013-12-03 12:26:38

标签: javascript file-upload cordova

我正在尝试更新配置文件图片,该图片在本地服务器上运行,但不在远程服务器上运行, 在最后一个我收到Http 411回复

function imageReceived(imageURI) { // this is done after taking a picture
  var options = new FileUploadOptions();
      options.fileName = 'profilePic.jpg';
      options.headers = {Authorization: 'Token token=' + profile.accessToken};

  var ft = new FileTransfer();
  ft.upload(imageURI,
     url("/api/v1/update_avatar"), // url() is a function that returns the full path
     function(result) {
       alert(result);

     },
     function(error) {
         alert( JSON.stringify(error));
     },
     options);
}

PS:

  • profile是我已经拥有的一个类,而accessToken具有正确的值
  • 本地服务器是HTTP,远程服务器是HTTPS,这会有所不同吗?

我做错了什么或错过了什么?

任何帮助都将非常感谢!!

2 个答案:

答案 0 :(得分:1)

您必须在请求中发送Content-Length标头。

来自http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

411 Length Required

The server refuses to accept the request without a defined Content- Length. The client MAY repeat the request if it adds a valid Content-Length header field containing the length of the message-body in the request message.

答案 1 :(得分:0)

您必须与托管公司进行讨论,正如this post所述。

  

Web服务器(运行Web站点)认为HTTP数据流   由客户端发送(例如您的Web浏览器或我们的CheckUpDown机器人)   应该包含一个内容长度'规格。这通常是   仅用于导致数据放置的HTTP方法   Web服务器,而不是从中检索数据。

     

修复411错误 - 一般

     

这种错误在大多数网络流量中很少发生,特别是在   客户端系统是一个Web浏览器。这个问题只能通过解决   检查你的客户端系统正在尝试做什么,然后讨论   你的ISP为什么Web服务器需要一个' Content-Length'说明书