自己开发Socket代理服务器程序碰到的两个非常现实的问题
1、页面为中文时如果使用ASCII对返回数据转码在客户端就会出现乱码
2、页面中使用Cookie时如何让代理服务器取到并传给客户端?
------解决方案--------------------解决这两个问题需要了解http协议
1.socket接收到的数据未转换之前位2进制,一般http协议头以两个连续的回车换行结束,后面可能为数据长度和html内容,因此html编码方式可能在http协议头中已经设置,例如utf-8,gb2312,可以自己写程序判断
2.客户端浏览器访问网站服务器时,在http数据包中有一个Cookie头,后面就是cookie值GET /dilingling/images/center.gif HTTP/1.1
Accept: */*
If-Modified-Since: Thu, 10 May 2007 02:20:40 GMT; length=198
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: www230.clickeye.cn
Connection: Keep-Alive
Cookie: key=123X103X29X245XX6923CC23FE051C88F0F45A857A793630331087
如果网站服务器需要设置客户端的cookie,则在返回客户端浏览器的http数据包中会包含这样的头:set-cookie:aspsessionid=fdsfsdfgndsfgeedsnfd4
代理服务器可以取到这个cookie值
多抓几个http包就明白了
------解决方案--------------------如果服务器要设置cookie那在http的头部就肯定能够看到这个cookie.
你的代理服务器不需要处理这些之需要转发就可以了