HTTP(HyperText Transfer Protocol)超文本传输协议
Linux系统可以通过curl+url发起一次http请求,如果想查看请求头信息,可加上-I
Http协议详解:
http是一种无状态协议,即web浏览器与web服务器之间不需要建立持久的链接,当web服务器返回响应后,链接就被关闭
HTTP请求
http请求包括请求行,请求头,请求体(请求正文)
其中请求头与请求体之间有一个空白行
HTTP响应
http响应也由三部分组成,分别是响应行,响应头,响应正文
响应正文与响应头之间有一空白行
HTTP请求方法
1.GET
get方法没有请求内容
2.HEAD
HEAD请求方法不返回消息主体,只能起到测试的效果。攻击者在编写扫描工具时,常用head方法,因为只测试资源是否存在,所以一定是最快的
3.POST
与GET方法类似,但有请求内容,向服务器传输大量数据时通常会使用POST方法
4.PUT
PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源在服务器中存在,则替换,如果不存在,将会创建这个资源。
例如:
PUT /input.txt
HOST: www.xsser.com
Content-Length: 6
123456
上述请求会在服务器根目录下创建一个input.txt文件,内容为123456
通常服务器会关闭PUT请求,属于危险的方法之一
5.DELETE
用于请求资源服务器删除指定资源,服务器一般会关闭此方法,也属于危险方法之一
6.TRACE
7.CONNECT
8.OPTIONS
HTTP状态码
http状态码位于响应行中,总体上分为以下5种:
1xx:信息提示,表示请求已经成功被接收(100-101)
2xx:请求成功(200-206)
3xx:重定向,重定向状态码用于告诉客户端,它们访问的资源已经被移动,并告诉客户端新的资源地址(300-305)
4xx:客户端错误(400-415)
5xx:服务器内部出错(500-505)
常见的状态码:
200:请求成功
302:重定向
404:请求资源不存在
400:客户端请求有语法错误,不能被服务器所理解
401:请求未经授权
403:服务器拒绝提供服务
500:服务器内部错误
503:服务器当前不能处理客户端的请求,一段时间后可能回复正常
HTTP请求头
1.Host
2.User-Agent:记录客户端浏览器,系统信息
3.Referer:代表当前访问的URL的上一个URL,即客户端是从哪一个URL跳转过来的。
4.Cookie:用来表示请求者的身份
5.Range:range可以请求实体的部分内容,多线程下载一定会用到此头
6.x-forward-for(XFF),代表请求端的IP,可以有多个,逗号隔开。
7.Accept:指定客户端接收哪些MIME类型的信息,如Accept:text/html
说明客户端希望接收html文本
8.Accept-Charset:用于指定客户端接收的字符集
HTTP响应头
1.Server:服务器所使用的的Web服务器名称,如Server:Apache/1.3.6(Unix)
2.Set-Cookie:向客户端设置Cookie
3.Last-Modified:资源最后的修改时间
4.Location:服务器通过这个头告诉浏览器去访问哪个页面,通常配合状态码(302)使用
5.Refresh:告诉浏览器定时刷新
HTTP实体头
实体头定义了关于实体正文和请求所标识的资源的元信息(实体内容的属性)
1.Content-Type:用于向接收方指示实体的介质类型。
2.Content-Encoding:指示了实体正文附加内容的编码
3.Content-Length:实体正文的长度,以字节方式存储的十进制数字来表示。
4.Last-Modified:资源的最后修改时间
HTTP与HTTPS的区别
https是以安全为标准的http通道,其实就是http的升级版本。
https的安全基础为SSL,即在HTTP下加入SSL层,简单来说,HTTPS通过安全传输机制进行数据传送,这种机制可以保护网络传送的所有数据的隐秘性与完整性。
- HTTP是超文本传输协议,信息明文传输。HTTPS具有安全性的SSL加密传输协议
- HTTP与HTTPS协议使用的是完全不同的链接方式,HTTP采用80端口,HTTPS采用443端口
- HTTPS协议需要到ca申请证书,而HTTP协议不需要
- HTTP连接相对简单,无状态,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议。