内容长度允许的最大长度

时间:2014-04-02 20:54:14

标签: ios http content-length

我在ObjectiveC中编程。我想所有oC程序员都使用相当标准的代码发布:

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

目前我收到警告,NSUInteger不应该用作格式参数。 警告提示类型转换(unsigned long)。并且还用%lu替换%d。这听起来很合理。

在HTTP定义中,我找不到Content-Length实际可能有多长。只是相当模糊的八重奏。那是8位吗?我找不到答案!

2 个答案:

答案 0 :(得分:4)

Content-Length的最大值没有特定限制。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

14.13 Content-Length
Any Content-Length greater than or equal to zero is a valid value.

setValue:forHTTPHeaderField:类引用中的NSMutableURLRequest的Apple文档说明了

  

此外,如果可以确定上传正文数据的长度   自动(例如,如果您提供身体内容   NSData对象),然后为您设置Content-Length的值。

答案 1 :(得分:-2)

这个rfc很糟糕,因为它说内容长度必须是“十进制数”,但它也表示它是一个八位字节(因此它不能是十进制数)。

这取决于您的实施。 例如,在Java中,max content-length是Integer.MAX_VALUE但是,您可以通过直接读取标头来绕过它(HTTP标头是字符串)。

那里没有真正的HTTP限制。