分享知识,分享快乐;收获友谊,收获财富。html
你们好,我是数字雨,QQ:798033502web
主站:http://www.91duofanli.com/浏览器
店铺:http://itbook.taobao.com/缓存
今天给你们带来的教程是《Web-Attak系列教程第二季0x12讲——HTTP的请求与响应格式》服务器
本教程仅做教学演示和技术讨论,不得进行违法犯罪活动。cookie
HTTP的消息结构如图:
app
1、请求格式 ui
1, 通用头(general-header):
Cache-Control:客户端但愿服务端如何缓存本身的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0";
Connection:客户端是否但愿与服务端之间保持长链接,如"Connection: close", "Connection: keep-alive";
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了客户端一些特殊请求信息,如 "Pragma: no-cache" 客户端但愿代理或应用服务器不该缓存与该请求相关的结果数据;
Via:通常用在代理网关向应用服务器发送的请求头中,代表该来自客户端的请求通过了网关代理,
格式为:"Via: 请求协议版本 网关标识 [其它信息] ",
如 :" Via: 1.1 webcache_250_199.hexun.com:80 (squid)" 编码
2, 请求头(request-header):
Accept: 代表客户同端可接受的请求回应的媒体类型范围列表。星号“*”用于按范围将类型分组,用“*/*”指示可接受所有类型;用“type/*”指示可接受 type类型的全部子类型,如“ Accept: image/gif, image/jpeg, */*”;
Accept-Charset:客户端所能识别的字符集编码格式,格式:“Accept-Charset: 字符集1[:权重],字符集2[:权重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”;
Accept-Language:客户端所能识别的语言,格式:“Accept-Language: 语言1[:权重],语言2[:权重]”,如:” Accept-Language: zh, en;q=0.7”;
Host:客户请求的主机域名或主机IP,格式:“Host: 域名或IP[:端口号]”,如:“Host: www.hexun.com:80“,请求行中如有HTTP/1.1则必须有该请求头;
User-Agent:代表用户所使用的浏览器标识,主要用于统计的目的;
Referer:指明该请求是从哪一个关联链接而来; url
Accept-Encoding:客户端所能识别的编码压缩格式,如:“Accept-Encoding: gzip, deflate”;
If- Modified-Since:该字段与客户端缓存相关,客户端所访问的URL自该指定日期以来在服务端是否被修改过,若是修改过则服务端返回新的修改后 的信息,若是未修改过则服务器返回304代表此请求所指URL不曾修改过,如:“If-Modified-Since: Fri, 2 Sep 2006 19:37:36 GMT”;
If-None-Match:该字段与客户端缓存相关,客户端发送URL请求的同时发送该字段及标识,如 果服务端的标识与客户端的标识一致,则返回304代表此URL未修改过,若是不一致则服务端返回完整的数据信息,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”;
Cookie:为扩展字段,存储于客户端,向同一域名的服务端发送属于该域的cookie,如:“Cookie: MailUserName=whouse”;
3, 实体头(entity-header): (此类头存在时要求有数据体)
Content-Encoding:客户端所能识别的编码压缩格式,如:“Content-Encoding: gzip, deflate”;
Content-Length:客户端以POST方法上传数据时数据体部分的内容长度,如:“ Content-Length: 24”;
Content- Type:客户端发送的数据体的内容类型,如:“Content-Type: application/x-www-form-urlencoded”为以普通的POST方法发送的数据;“Content-Type: multipart/form-data; boundary=---------------------------5169208281820”,则代表数据体由多部分组成,分隔符为 “-----------------------------5169208281820”;
2、响应格式
A, 通用头(general-header):
Cache- Control:服务端要求中间代理及客户端如何缓存本身响应的数据,如“Cache-Control: no-cache”,如:“Cache-Control: private” 不但愿被缓存,“Cache-Control: public” 能够被缓存;
Connection:服务端是否但愿与客户端之间保持长链接,如“Connection: close”, “Connection: keep-alive”;
Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段;
Pragma:包含了服务端一些特殊响应信息,如 “Pragma: no-cache” 服务端但愿代理或客户端不该缓存结果数据;
Transfer-Encoding:服务端向客户端传输数据所采用的传输模式(仅在HTTP1.1中出现),如:“Transfer-Encoding: chunked”,注:该字段的优先级要高于“Content-Length” 字段的优先级;
B,响应头(response-header):
Accept-Ranges:代表服务端接收的数据单位,如:“Accept-Ranges: bytes”, ;
Location:服务端向客户端返回此信息以使客户端进行重定向,如:“Location: http://www.hexun.com”;
Server:服务端返回的用于标识本身的一些信息,如:“ Server: Microsoft-IIS/6.0”;
ETag:服务端返回的响应数据的标识字段,客户端可根据此字段的值向服务器发送某URL是否更新的信息;
C,实体头(entity-header): (此类头存在时要求有数据体)
Content-Encoding:服务端所响应数据的编码格式,如:“Content-Encoding: gzip”;
Content-Length:服务端所返回数据的数据体部分的内容长度,如:“ Content-Length: 24”;
Content-Type:服务端所返回的数据体的内容类型,如:“Content-Type: text/html; charset=gb2312” ;
Set-Cookie:服务端返回给客户端的cookie数据,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”
3、服务器返回状态码
1xx:代表服务端接收了客户端请求,客户端继续发送请求;
2xx:客户端发送的请求被服务端成功接收并成功进行了处理;
3xx:服务端给客户端返回用于重定向的信息;
4xx:客户端的请求有非法内容;
5xx:服务端未能正常处理客户端的请求而出现意外错误。
举例:
“100” ; 服务端但愿客户端继续;
“200” ; 服务端成功接收并处理了客户端的请求;
“301” ; 客户端所请求的URL已经移走,须要客户端重定向到其它的URL;
“304” ; 客户端所请求的URL未发生变化;
“400” ; 客户端请求错误;
“403” ; 客户端请求被服务端所禁止;
“404” ; 客户端所请求的URL在服务端不存在;
“500” ; 服务端在处理客户端请求时出现异常;
“501” ; 服务端未实现客户端请求的方法或内容;
“502” ; 此为中间代理返回给客户端的出错信息,代表服务端返回给代理时出错;
“503” ; 服务端因为负载太高或其它错误而没法正常响应客户端请求;
“504” ; 此为中间代理返回给客户端的出错信息,代表代理链接服务端出现超时。
菜鸟做品,大牛勿喷!