HTTP请求概念
一、http请求组成
以get请求为例:
二、请求协议:
1)http:超文本传输协议,被用于在web浏览器和网站服务器之间传递信息,是基于TCP/IP的关于数据如何在万维网中如何通信的协议,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截获了传输报文,就可以读取内容,所以不建议传输一些敏感信息,他是一种基于TCP连接的请求/响应模式的协议,用于从WWW服务器传输超文本(HTML)到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记,http限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,客户端与服务器不会一直保持会话连接,所以为了保持这连接状态,出现了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。目前广泛使用的是HTTP/1.1版本
2)https:安全套接字超文本传输协议(HTTPS),HTTPS在HTTP的基础上加入了SSL 协议,SSL依靠证书来检验服务器的身份,并且还为客户端与服务器之间的通信加密,简单讲是HTTP的安全版,这是目前实际使用中运用较多的。
三、常见请求类型
1) get请求:向服务器请求指定的数据(页面信息),并返回实体主体(一般用于去请求获取数据),get请求的参数直接在地址栏显示,以?隔开,如果有多个参数,每个参数用&分隔。由于参数直接显示在url上所以隐私性安全性较差,且参数长度也是有限制的,GET请求没有请求体,get请求一般用于查询
2) post请求:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。post请求有请求体,通常用来发送数据,发送数据就是被包含在请求体中。POST请求一般用于新建,也可以用于修改。
3) put请求:从客户端向服务器传送的数据取代指定的文档的内容,一般用于修改
4) delete请求:请求服务器删除指定的页面,一般用于删除
5) head请求:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
6) connect请求:能够将连接改为管道方式的代理服务器
7) options请求:允许客户端查看服务器的性能
8)trace请求:显示服务器收到的请求,主要用于测试或诊断
从上面可知:get、post、delete、put四种请求类型可完成对服务器上资源数据的增删查改操作
get和post请求的区别如下:
1.get是向服务器要数据,也就是接收数据,而post是向服务器发送数据
2.get请求的参数在地址栏显示,而且post请求的参数在请求体显示,所以get请求的安全性没有post安全性高
3.get请求的参数有长度的限制,限制的长度根据浏览器而定,而post请求的参数没有长度的限制
4.get 请求体是没有内容的,而post请求体有内容
四、HTTP报文组成
1)请求报文构成
- 请求行:包括请求方法、URL、协议/版本
- 请求头(Request Header)
- 请求正文
2)响应报文构成
- 状态行(响应的状态码)
- 响应头
- 响应正文
五、响应状态码
状态码分类:
- 1XX- 信息型,服务器收到请求,需要请求者继续操作。
- 2XX- 成功型,请求成功收到,理解并处理。
- 3XX - 重定向,需要进一步的操作以完成请求。
- 4XX - 客户端错误,请求包含语法错误或无法完成请求。
- 5XX - 服务器错误,服务器在处理请求的过程中发生了错误。
常见状态码:
- 200 OK - 客户端请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 302 - 临时跳转
- 400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
- 404 - 请求资源不存在,可能是输入了错误的URL
- 500 - 服务器内部发生了不可预期的错误
- 503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常