文章转自 http://www.cnblogs.com/pcdelphi/archive/2011/03/29/2017953.html
在socket中用http代理访问网页的关键问题
以前关注过在socket使用http代理访问网页的问题,原理很简单,就是非代理情况下connect的是目标网页的IP和端口,而使用代理则connect代理IP和端口,连接成功后就直接send数据了。
原理清楚,但一直没应用过,今天正好需要就测试了一下,结果在http代理可用,connect正常的情况下,send数据后总是返回http/1.1 400。最后在一个帖子中找到了原因所在,其实使用http代理来发送GET或POST,其包的格式与非代理的GET或POST有一些区别,区别共有两处:
1.发送的包中可以不加Host ( Host: www.baidu.com )
2.在GET的路径中设置访问页面的完整地址,即 GET http://www.baidu.com/ HTTP/1.1
附上帮我解决这个问题的帖子:
|