为什么非法cookie由浏览器发送并由Web服务器接收(rfc 2109,2965)?

Art*_*yom 5 cookies webserver rfc

根据RFC 2109,2965 cookie的值可以是HTTP令牌或带引号的字符串,而令牌不能包含非ASCII字符.

  1. Cookie的RFC 2109RFC2965
  2. HTTP的RFC 2068和2616令牌定义:http://tools.ietf.org/html/rfc2616#page-16

但是我发现Firefox浏览器(3.0.6)按原样发送带有utf-8字符串的cookie,我测试的三个Web服务器(apache2,lighttpd,nginx)按原样将该字符串传递给应用程序.

例如,来自浏览器的原始请求:

$ nc -l -p 8080
GET /hello HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.9) Gecko/2009050519 Firefox/2.0.0.13 (Debian-3.0.6-1)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1255,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: wikipp=1234; wikipp_username=??????
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)

和apache,nginx和lighttpd HTTP_COOKIECGI变量的原始响应:

wikipp=1234; wikipp_username=??????
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Dol*_*lph 3

根据互联网官方协议标准(STD 1、RFC 5000) , RFC 2109(1997 年 2 月)已过时,并被RFC 2965 (2000 年 10 月)取代。

您可能还对2010 年 3 月 7 日修订为 2965 的最新草案感兴趣。

2965 年令牌的唯一定义是:

非正式地,一系列非特殊、非空白字符

我不认为整个 UTF-8 都被该定义所禁止——只有可能被误认为控制/语法字符的字符。