解析HTTP标头 - 编码问题

时间:2011-10-21 19:52:37

标签: http character-encoding

我正在使用C ++编写一个小型HTTP服务器(只是为了好玩)。

当收到来自客户端的请求时,我是否应该担心HTTP标头的字符集?是否保证所有这些都只包含一个字节的ASCII字符?

2 个答案:

答案 0 :(得分:3)

是否保证所有这些字符串只包含一个字节的ASCII字符?

没有。 HTTP使用TCP,因此可以传输八位字节> = 128。

HTTP是否允许使用非ASCII字符?

是。请参阅ABNF了解字段内容(RFC 2616, Section 4.2)和引用字符串(RFC 2616, Section 2.2)。

HTTP是否定义了编码?

或多或少,通过声明非ISO-8859-1字符需要额外的编码层(同样,从2.2):

  

TEXT规则仅用于描述性字段内容和不打算由消息解析器解释的值。 * TEXT的单词只有在符合RFC 2047 [14]的规则编码时才包含ISO-8859-1 [22]以外的字符集中的字符。

这是否在实践中使用?

是。例如,在Content-Disposition中。

这是个好主意吗?

不,因为很多收件人和中间人都错了。

答案 1 :(得分:0)

这是一个很好的问题,我不知道但是想知道。我相信你会在这里找到答案:http://www.w3.org/Protocols/rfc2616/rfc2616.html

该文档说Headers遵循RFC822(http://www.ietf.org/rfc/rfc0822.txt)并且那个人说ASCII。我认为你可以依赖它的全部ASCII。