Cookies 为什么非法cookie通过浏览器发送并由web服务器接收(rfc 2109、2965)?
根据RFC2109,2965 cookie的值可以是HTTP令牌或带引号的字符串,并且令牌不能包含非ASCII字符Cookies 为什么非法cookie通过浏览器发送并由web服务器接收(rfc 2109、2965)?,cookies,webserver,rfc,Cookies,Webserver,Rfc,根据RFC2109,2965 cookie的值可以是HTTP令牌或带引号的字符串,并且令牌不能包含非ASCII字符 Cookie的RFC和 HTTP的RFC 2068和2616令牌定义: 然而,我发现Firefox浏览器(3.0.6)按原样发送带有utf-8字符串的cookie 我测试的三台web服务器(apache2、lighttpd、nginx)按原样将此字符串传递给 应用程序 例如,来自浏览器的原始请求: $ nc -l -p 8080 GET /hello HTTP/1.1 Host:
$ 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=ארתיום
我错过了什么?(1997年2月)已经过时,并被(2000年10月)取代
您可能还对最近修订的2965感兴趣
2965中标记的唯一定义是:
非正式地说,一系列非特殊、非空白字符
<>我不认为UTF-8的整体被该定义所禁止,只有字符可能被误认为是控制/语法字符。已经过时了。根据本rfc:
cookie名称必须是一个令牌,它由可打印的ascii字符组成,不带 ( ) < > @ ,; : \ “/[]?={}空间选项卡cookie值由可打印的ascii字符组成,不带空格“,;\有可能被引号包围,但根据新的RFC,值仍然是token或quoted pair,因此它无法解决我的问题引号:“以下语法使用表示法,以及tokens digital(十进制数字)、token(非正式地,一系列非特殊、非空白字符),以及http/1.1规范[RFC2616]中的http_URL来描述它们的语法。”-因此,很明显,令牌指的是RFC2616(http),它禁止令牌是非关联的,顺便说一句,在您链接到的草案中,根据ro 2616 http/1.1 RFCIt的Internet定义的令牌更为明确。人们使用这些标准在usenet上煽动其他人,不是为了实现他们的软件。@jrockway我知道这是一台web服务器,而是所有3台最流行的(Linux)服务器?