来讨论一个HTTP协议的问题

leonbingo 2010-08-23 11:42:06

HttpWebRequest webRequest = HttpWebRequest.Create(host) as HttpWebRequest;
WebProxy webProxy = new WebProxy(proxy);
webRequest.Proxy = webProxy;
webRequest.Proxy.Credentials = new NetworkCredential(userName, password, domain);


这里是利用HttpWebRequest发出一个http请求的过程,这里利用了代理服务器,并且设置了代理服务器的用户名,密码和域,大家知道所有的http请求都是基于http协议的,我想请问熟悉HTTP的达人们,当我加了代理,和代理的Credentials的时候,整个http协议的请求头是不是产生了什么变化,请熟悉的达人们解答,给出详细的http头解释。
...全文
100 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
archu 2010-09-02
  • 打赏
  • 举报
回复
那么你用Fiddler抓个包看一眼就知道有什么区别了。
leonbingo 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 archu 的回复:]
这个用户名和密码是用来验证Proxy Server的,如果你的Proxy Server设置为"Windows集成认证"等非匿名认证方式的话,才会使用到这个用户名和密码。

一般情况下,很少有人变态地把Proxy Server设置为需要身份认证,这是为什么在你的测试中看不到使用用户名和密码的原因。
[/Quote]

刚好,就是公司内部设置为集成验证了
  • 打赏
  • 举报
回复
抓一下http头吧,
yzf86211861 2010-08-26
  • 打赏
  • 举报
回复
http://www.http-stats.com/Proxy-Connection
http://www.freeplug.org/blog/read.php?29
archu 2010-08-26
  • 打赏
  • 举报
回复
这个用户名和密码是用来验证Proxy Server的,如果你的Proxy Server设置为"Windows集成认证"等非匿名认证方式的话,才会使用到这个用户名和密码。

一般情况下,很少有人变态地把Proxy Server设置为需要身份认证,这是为什么在你的测试中看不到使用用户名和密码的原因。
MaoJunHang 2010-08-26
  • 打赏
  • 举报
回复
学习学习
leonbingo 2010-08-24
  • 打赏
  • 举报
回复
我们知道http其实就是TCP协议,tcp实际上就是发送二进制数据,webrequest也是发出tcp请求的,但是我看不出来,用fiddle截取的http包里面看不见用户名和密码,也就是NetworkCredential怎么在请求中表示的呢?
宝_爸 2010-08-23
  • 打赏
  • 举报
回复
应该是有些改动的。

参考下面的文章

刚看到的与代理服务器相关http头说明
chengwangtianxia 2010-08-23
  • 打赏
  • 举报
回复
进来参观,顺便拿分
随风落梦 2010-08-23
  • 打赏
  • 举报
回复
不太会,进来学习
leonbingo 2010-08-23
  • 打赏
  • 举报
回复
各位大人们啊,
村长_乐 2010-08-23
  • 打赏
  • 举报
回复
帮你顶个,再看
leonbingo 2010-08-23
  • 打赏
  • 举报
回复
这是不是沉得太快了。。。
archu 2010-08-23
  • 打赏
  • 举报
回复
关于Proxy-Connection,请参考
http://www.http-stats.com/Proxy-Connection
archu 2010-08-23
  • 打赏
  • 举报
回复
在客户端,从Http的协议标准来讲,http头在使用proxy或者不使用的情况下并没有任何区别。

但是,对于现在的浏览器,包括使用HttpWebRequest,在使用proxy的情况下都会加入一个proxyconnection的头信息,如下:
------------------------------------
- Http: Request, GET http://hqdigi2.eastmoney.com/EM_Quote2010NumericApplication/CompatiblePage.aspx
Command: GET
+ URI: http://hqdigi2.eastmoney.com/EM_Quote2010NumericApplication/CompatiblePage.aspx?Type=fs&jsName=js&stk=0000122&Reference=xml&rt=0.2530078989225645
ProtocolVersion: HTTP/1.1
Host: hqdigi2.eastmoney.com
UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)
Accept: */*
Accept-Language: en-US
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
ProxyConnection: keep-alive
Referer: http://quote.eastmoney.com/sz000012.html
+ Cookie: XXXXXXXXXXXXXXX
HeaderEnd: CRLF
------------------------------------

如果不用proxy,那么它就会使用"Connection: keep-alive"

从服务端来讲,由于请求是先发到proxy server,再从proxy发送到web服务器,所以在服务器上看到的HTTP请求的头已经变掉了。具体变成什么样,可以参考6楼的回复。
porschev 2010-08-23
  • 打赏
  • 举报
回复
我帮顶一下。。

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧