http 请求头和响应头 的问题 ------高分求解

时间:2022-02-16 21:48:57
我想请问下用
myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Headers.ToString()
得到的这个响应头是什么

我访问www.163.com的时候得到很多响应头啊。
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
If-Modified-Since: Thu, 08 Jun 2006 07:30:00 GMT; length=79697
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.163.com
Connection: Keep-Alive
Cookie: _sur_webads=webads; NETEASE_SSN=ylonghome; NETEASE_ADV=11&21; MAIL163_SSN=ylonghome; Province=0571; City=0571; search=32339149738706858; _ntes_nvid=2d72148102c634b9322fb6b3ce5001fe; _ntes_nnsit=|www|; _ntes_nvtm=2


HTTP/1.0 304 Not Modified
Date: Thu, 08 Jun 2006 07:31:42 GMT
Server: Apache/2.0.52 (Unix)
ETag: "1ab2e5-13751-739e6e00"
X-Cache: MISS from news.163.com
Connection: keep-alive


GET /inc/new163/DartRichMedia_1_03.js HTTP/1.1
Accept: */*
Referer: http://www.163.com/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
If-Modified-Since: Tue, 30 May 2006 11:12:56 GMT; length=1088
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.163.com
Connection: Keep-Alive
Cookie: _sur_webads=webads; NETEASE_SSN=ylonghome; NETEASE_ADV=11&21; MAIL163_SSN=ylonghome; Province=0571; City=0571; search=32339149738706858; _ntes_nvid=2d72148102c634b9322fb6b3ce5001fe; _ntes_nnsit=|www|; _ntes_nvtm=2


HTTP/1.0 304 Not Modified
Date: Tue, 30 May 2006 11:20:48 GMT
Content-Type: application/x-javascript
Last-Modified: Tue, 30 May 2006 11:12:56 GMT
Age: 200410
X-Cache: HIT from news.163.com
Connection: keep-alive


GET /images/neteaselogo.gif HTTP/1.1
Accept: */*
Referer: http://www.163.com/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
If-Modified-Since: Thu, 15 Jul 2004 02:41:24 GMT; length=1112
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: www.163.com
Connection: Keep-Alive
Cookie: _sur_webads=webads; NETEASE_SSN=ylonghome; NETEASE_ADV=11&21; MAIL163_SSN=ylonghome; Province=0571; City=0571; search=32339149738706858; _ntes_nvid=2d72148102c634b9322fb6b3ce5001fe; _ntes_nnsit=|www|; _ntes_nvtm=2

等等,还有很多。那这个myHttpWebResponse.Headers.ToString()的值到底是哪一部分的呢。
还有要是www.163.com里面还镶嵌着一张别的页面呢。那不是更复杂啊。

8 个解决方案

#1


HTTP 请求头概述 

HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。 

下面是一些最常见的请求头: 

Accept:浏览器可接受的MIME类型。 
Accept-Charset:浏览器可接受的字符集。 
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。 
Content-Length:表示请求消息正文的长度。 
Cookie:这是最重要的请求头信息之一,参见后面《Cookie处理》一章中的讨论。 
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 
Host:初始URL中的主机和端口。 
If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 
Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 
UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。 
有关HTTP头完整、详细的说明,请参见http://www.w3.org/Protocols/的HTTP规范。

#2


楼上的能给我讲解明白些吗。。。。我的问题,,可能我概念搞不清楚,谢谢了

#3


i nat !bian ding

#4


谢谢楼上的。。分不多。一会也给你几分

#5


GET开头的是HTTP请求,例如:
GET / HTTP/1.1
这是HTTP请求第1句,有3个部分组成:请求方法为Get,另一种请求方法为Post;请求的页面为"/";使用的协议是HTTP 1.1。又例如:
GET /inc/new163/DartRichMedia_1_03.js HTTP/1.1
同样是Get方法,同样是HTTP 1.1,不过请求的页面为"/inc/new163/DartRichMedia_1_03.js"。

请求从第2句开始就是请求的一堆属性,都是“属性名称-冒号-属性值”的形式,你就按照属性名称查 gaoshanshan(高姗姗(虽然姗姗来迟 还猜不透来意)) 给出的那份表就是了。

----------------

HTTP/1.0开头的是回应,例如:
HTTP/1.0 304 Not Modified
同样是分3部分来解释:HTTP/1.0指服务器端使用HTTP 1.0协议;304是本回应的回应代码;"Not Modified"是回应代码的解释。

回应第2行开始,同样是属性名称-属性值的配对,和请求一样。

----------------

需要说明的是304响应代码的意思。由于请求中有一个属性If-Modified-Since: Thu, 15 Jul 2004 02:41:24 GMT,表面的意思是如果在"Thu, 15 Jul 2004 02:41:24 GMT"之后有新版本的页面请服务器返回,背后的意思是如果页面在此时间后没有更改过就不用返回了因为浏览器已经缓存了此时间的版本。而服务器的304的响应代码就是,页面在此时间后确实没有修改过,所以不返回此页面的内容。

#6


谢谢

#7


我采集的时候也没有你的代码那么长.
public string GetHttp(string sUrl)
{
WebClient client1 = new WebClient();
client1.Credentials = CredentialCache.DefaultCredentials;
byte[] buffer1 = client1.DownloadData(sUrl);
string text1 = Encoding.Default.GetString(buffer1);
client1.Dispose();
try
{
HttpContext.Current.Session.Abandon();
}
catch{}
return text1;

#8


没什么好疑惑的吧

比如ie 首次请求到 页面主内容 然后要发现主内容的脚本、包含、图片、然后每个都要请求回来显示。 

说复杂也复杂 要不着浏览器可能很多个ie了

#1


HTTP 请求头概述 

HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。 

下面是一些最常见的请求头: 

Accept:浏览器可接受的MIME类型。 
Accept-Charset:浏览器可接受的字符集。 
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。 
Content-Length:表示请求消息正文的长度。 
Cookie:这是最重要的请求头信息之一,参见后面《Cookie处理》一章中的讨论。 
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 
Host:初始URL中的主机和端口。 
If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 
Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 
UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。 
有关HTTP头完整、详细的说明,请参见http://www.w3.org/Protocols/的HTTP规范。

#2


楼上的能给我讲解明白些吗。。。。我的问题,,可能我概念搞不清楚,谢谢了

#3


i nat !bian ding

#4


谢谢楼上的。。分不多。一会也给你几分

#5


GET开头的是HTTP请求,例如:
GET / HTTP/1.1
这是HTTP请求第1句,有3个部分组成:请求方法为Get,另一种请求方法为Post;请求的页面为"/";使用的协议是HTTP 1.1。又例如:
GET /inc/new163/DartRichMedia_1_03.js HTTP/1.1
同样是Get方法,同样是HTTP 1.1,不过请求的页面为"/inc/new163/DartRichMedia_1_03.js"。

请求从第2句开始就是请求的一堆属性,都是“属性名称-冒号-属性值”的形式,你就按照属性名称查 gaoshanshan(高姗姗(虽然姗姗来迟 还猜不透来意)) 给出的那份表就是了。

----------------

HTTP/1.0开头的是回应,例如:
HTTP/1.0 304 Not Modified
同样是分3部分来解释:HTTP/1.0指服务器端使用HTTP 1.0协议;304是本回应的回应代码;"Not Modified"是回应代码的解释。

回应第2行开始,同样是属性名称-属性值的配对,和请求一样。

----------------

需要说明的是304响应代码的意思。由于请求中有一个属性If-Modified-Since: Thu, 15 Jul 2004 02:41:24 GMT,表面的意思是如果在"Thu, 15 Jul 2004 02:41:24 GMT"之后有新版本的页面请服务器返回,背后的意思是如果页面在此时间后没有更改过就不用返回了因为浏览器已经缓存了此时间的版本。而服务器的304的响应代码就是,页面在此时间后确实没有修改过,所以不返回此页面的内容。

#6


谢谢

#7


我采集的时候也没有你的代码那么长.
public string GetHttp(string sUrl)
{
WebClient client1 = new WebClient();
client1.Credentials = CredentialCache.DefaultCredentials;
byte[] buffer1 = client1.DownloadData(sUrl);
string text1 = Encoding.Default.GetString(buffer1);
client1.Dispose();
try
{
HttpContext.Current.Session.Abandon();
}
catch{}
return text1;

#8


没什么好疑惑的吧

比如ie 首次请求到 页面主内容 然后要发现主内容的脚本、包含、图片、然后每个都要请求回来显示。 

说复杂也复杂 要不着浏览器可能很多个ie了