HTTP消息:一行或几行单行显示的消息头+一个强制空白行+消息主体
HTTP请求包:
- 请求的第一行:三个字段以空格隔开,1. GET请求,没有消息实体,故消息头后无数据。2. 所请求的url。3. Http版本,目前大多数为1.1,还有1.0的。渗透测试唯一区别可能是1.1版本必须使用host请求头。
消息头:
- Host:指出被访问url的主机名称
- User-Agent:由于历史原因大多包含Mozilla前缀
- Accept:浏览器支持的MIME(Multipurpose Internet Mail Extensions)类型,斜杠前面是type大类型,后面是subtype子类型。
- Accept-Language:zh-ch:简体中文 zh:中文 q为权重系数
- Referer:发出请求的原始URL(当初HTTP规范单词拼写错误,一直延续到现在)
- Cookie:提交服务器向客户端发送的相关参数,之后客户端会带上cookie与服务端进行交互
- Connnection:客户端与服务端的连接
- 有时候还有:Accept-Encoding:压缩编码gzip、defalte
- 第一行:三个字段以空格隔开:1. Http版本 2. 状态码 3. 文本形式的“原因短句”
状态码:100 continue:已收到请求消息头,将继续发送主体。
200 ok:成功提交。
201 created:put请求响应返回表示成功提交。
301 Moved Permanently:永久重定向到另一个在location中的url。
302 Found:暂时重定向。
304 Not Modified。
400 Bad Request:无效的HTTP请求。
401 Unauthorized:允许请求前要求HTTP身份验证。
403 Forbidden:禁止访问被请求资源。
404 Not Found:请求资源不存在。
405 Method Not Allowed:不支持请求中使用的方法。
413 Request Entity Too Large:请求主体过长,服务器无法处理。
414 Request URI Too Long:请求URL过长,服务器无法处理。
500 Internal Server Error:服务器执行请求遇到错误。
503 Service Unavailable:服务器访问的应用程序无法作出响应
响应头:
- Server:Web服务器软件
- 时间
- 服务器 (Microsoft-IIS/6.0(2003) 7.0/7.5(2008)
- X-powered-by:使用的语言
- set-cookie
- pragma:浏览器是否将响应保存在缓存中 expires:表示已经过期
- content-length:消息头的长度
- content-type
- path
- cache-control
HTTP方法:
- GET:获取资源
- POST:执行操作
- TRACE:回显服务器收到的请求,主要用于测试或诊断
- OPTIONS:要求服务器报告对某一特殊资源有效的http请求
- PUT:试图使用包含在请求主体中的内容,向服务器上传指定的资源
编码:
url编码(对扩展ASCII字符集中任何有问题的字符进行编码,使其可通过HTTP安全传输):%3d表示= %25表示% %20表示空格 %0a表示新行 %00表示空字节
Unicode编码(与url类似,为通过HTTP传输):%u2215表示/ %u00e9 使用各种标准与畸形Unicode编码避开过滤。
Html编码(用于将问题字符并将其安全并入html文档的方案。主要在跨站脚本中发挥作用):"表示" '表示' &表示& <表示< &g:;表示>
Base64编码(常用于对电子邮件附件进行编码,使其通过smtp安全传输,还可用于在基本HTTP验证机制中对用户证书进行编码。最后输入数据块不能构成3块输出数据,就用一个或两个等号来补足输出)