根据 RFC 2109,2965 cookie 的值可以是 HTTP 令牌或带引号的字符串,并且令牌不能包含非 ASCII 字符。
- Cookie 的 RFC 2109和RFC2965
- HTTP 的 RFC 2068 和 2616 令牌定义:https ://www.rfc-editor.org/rfc/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
以及 apache、nginx 和 lighttpd HTTP_COOKIE
CGI 变量的原始响应:
wikipp=1234; wikipp_username=ארתיום
我想念什么?