繁体   English   中英

Content-Length 最大允许长度

[英]Content-Length maximum allowed 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位吗? 我找不到答案!

Content-Length 的最大值没有具体限制。

https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

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

还有setValue:forHTTPHeaderField:NSMutableURLRequest类参考状态中的 Apple 文档

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

这个 rfc 很糟糕,因为它说 content-length 必须是一个“十进制数”,但它也说它是一个八位字节数(所以它不能是十进制数)。

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

那里没有真正的 HTTP 限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM