一、简介
HTTP协议(超文本传输协议)是从万维网服务器传输超文本到本地浏览器的传送协议
HTTP是一个基于TCP/IP通信协议来传递数据(HTMP/文件/图片/查询结果)
HTTP是一个属于应用层的面向对象的协议
HTTP协议工作于客户端-服务端结构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送相应信息
二、主要特点
1、简单快速 客户端向服务端发送请求服务时,只需要发送请求方法和路径
2、灵活:HTTP允许传输任意形式的数据对象,具体由Content-type加以标记
3、无连接 限制每一次连接只处理一个请求
4、无状态 协议对事务处理没有记忆能力
5、支持B/S和C/S模式
三、HTTP的URL与URI
四、HTTP之请求消息Request
https://www.cnblogs.com/zhuifeng/p/4072248.html
(1)请求行
mothod+url+版本
GET user/info HTTP1.1
(2)请求头信息
用于说明服务器要使用的附加信息
Host Referer Accept Accept-Encoding Accept-Charset Cookie
(3)空白行
(4)请求数据
五、HTTP之相应消息Response
(1)状态行
HTTP版本+状态码+状态信息 HTTP1.1 200 OK
(2)应答头信息
(3)空白行
(4)响应数据
服务器返给浏览器的实体正文
六、状态码
http://www.runoob.com/http/http-status-codes.html
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码:
200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
七、工作原理流程
(1)TCP连接 web浏览器首先通过网络与web服务器建立连接,也就是TCP连接。HTTP是比TCP更高层次的应用层协议,只有低层次建立连接后才可以作用于高层次的连接,因此要建立TCP连接(三次握手)
(2)发送请求命令 GET /user/info HTTP1.1
(3)发送请求头信息 浏览器发送请求命令后,还要发送请求头信息,发送完后,发送一个空白行标识结束
(4)服务器应答 服务端对客户端的请求做出应答 HTTP1.1 200 OK 服务版本 状态码 状态信息
(5)服务端发送应答头信息
(6)web服务器向浏览器传输数据 在服务器发送完头信息时,发送一个空白行表示结束。然后根据Content_Type应答头信息的所描述的格式传输数据
(7)web服务器关闭TCP连接
一般情况下,当服务器向客户端发送完数据时,就要关闭连接
但是如果服务端或者客户端的头信息中含有 connection keep-alive,则TCP连接仍处于打开状态,于是浏览器可以继续通过相同的连接发送请求,保持连接节约了为每次请求建立新连接的时间,还节约了网络宽带
八、POST与GET请求
(1)、GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
(2)、GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
(3)、GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
(4)、GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码