Content-Length的允许的最大长度(Content-Length maximum allo

2019-10-19 17:43发布

我编程的ObjectiveC。 我想,所有的程序员摄氏度使用用于发布的相当标准的代码:

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的定义,我找不到多久内容长度实际上可能。 就在相当含糊八位。 那是8位? 我无法找到答案!

Answer 1:

另外,对内容长度的最大值没有特殊限制。

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类引用状态

此外,如果可以自动地确定上载体数据的长度(例如,如果提供身体内容与一个NSData对象),那么内容长度的值被设定为您服务。



Answer 2:

本RFC吮吸,因为它说,内容的长度必须是一个“小数”,但它也说,这是一个数量的八位字节(所以它不能是小数)。

这取决于您的实现。 例如在Java中,最大内容长度上都是Integer.MAX_VALUE但是,可以通过直接读取头(HTTP标头是字符串)绕过它。

有没有真正的HTTP限制在那里。



文章来源: Content-Length maximum allowed length