1、首先分析一下带cookie的HTTP收发协议的格式。
服务器发cookie给客户端时:
可以看到http头有Set-Cookie这个命令,当浏览器分析到这个命令时,就会在本地电脑上创建一个COOKIE文件并把这两个参数写入文件。
浏览器访问一个网站时,会在存放cookie的目录查找是否有这个网站的cookie文件,如果有的话,就会读取cookie文件的内容并在http请求头里加上、发出去。格式如下:
[b]这里需要注意的是:HTTP协议里,http头和数据之间的间隔是一个空行。
所有发HTTP头的时候,一定要在头的结束加两个换行,否则会出错。[/b]
代码示例见:[url]http://baiyuxiong.iteye.com/blog/786214[/url]
服务器发cookie给客户端时:
HTTP/1.1 200 OK
Date: Sat, 16 Oct 2010 01:11:21 GMT
Server: Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/0.9.8o PHP/5.2.12
X-Powered-By: PHP/5.2.12
Set-Cookie: username=admin
Set-Cookie: password=admin; expires=Sat, 16-Oct-2010 02:22:21 GMT
Content-Length: 332
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8
This is data
可以看到http头有Set-Cookie这个命令,当浏览器分析到这个命令时,就会在本地电脑上创建一个COOKIE文件并把这两个参数写入文件。
浏览器访问一个网站时,会在存放cookie的目录查找是否有这个网站的cookie文件,如果有的话,就会读取cookie文件的内容并在http请求头里加上、发出去。格式如下:
GET /sanex/images/button_bg.gif HTTP/1.1
Accept: */*
Referer: http://10.144.99.114/sanex/modules/subscribemanager/usermanager.html
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Accept-Encoding: gzip, deflate
Host: 10.144.99.114
Connection: Keep-Alive
Cookie: username=admin; password=admin
data
[b]这里需要注意的是:HTTP协议里,http头和数据之间的间隔是一个空行。
所有发HTTP头的时候,一定要在头的结束加两个换行,否则会出错。[/b]
代码示例见:[url]http://baiyuxiong.iteye.com/blog/786214[/url]