http协议
http协议即超文本传输协议,是基于请求与响应的、无状态的应用层的面向对象的协议,基于TCP的连接方式。
http协议的特点:
支持C/S模式(客户/服务器模式)[B/S是基于特定通信协议的—http协议的C/S架构]
-
简单快速:客户向服务器请求服务时,只需要传送方法和路径。请求常用的方法有GET,HEAD,POST。由于http协议简单,使得http服务器的程序规模小,因而通信速度快。
-
灵活:http协议允许传输任意类型的数据对象。
-
无连接:无连接的含义限制每次连接只处理一个请求,服务器处理完客户的请求,并且受到客户的应答后,断开连接。这种方式节约传输时间。
-
无状态:无状态是指协议对事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次连接传输的数据量增大,但是另一方面,服务器不需要先前的信息也使得他的应答较快。
URL
http协议中的URL(同一资源定位符)就是请求的网址。
http协议请求
http请求由三部分组成,分别是:请求行,消息报头,请求正文。
请求行格式为:请求符号(请求方法)+ 请求的URI + 协议版本,以空格隔开。
例: Method Request-URI HTTP-Version CRLF
其中 Method表示请求方法;Request-URI是一个统一资源标识符(URL是一种特殊类型的URI);HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
请求方法:
-
GET 请求获取Request-URI所标识的资源。——在浏览器地址栏输入网址访问网页时,浏览器采用的是GET的方法向服务器获取资源。
-
POST 在Request-URI所标识的资源后附加数据。——要求被请求的服务器接收附在请求后面的数据,常用于提交表单。
-
HEAD 请求获取Request-URI所标识的资源的响应报头。
-
PUT 请求服务器存储一个资源,并用Request-URI作为其标识。
-
DELETE 请求服务器删除Request-URI所标识的资源。
-
TRACE 请求服务器回送收到的请求信息。——主要用于测试或诊断。
-
CONNECT 保留将来用。
-
OPTION 请求查询服务器性能,或者查询与资源相关的选项和需求。
http协议响应
在接收和解释请求消息后,服务器返回一个http响应消息。
http响应分为三部分,分别是:状态行,消息报头,响应正文。
状态行的格式为:协议版本 + 服务器响应状态码 + 状态码文本描述,以空格隔开。
状态码由三位数字组成,第一个数字表示响应类别,有五种可能取值。以下为状态码:
-
1xx:指示信息——请求已接收,继续处理。
-
2xx:成功——请求已成功接收、理解、接受。
-
3xx: 重定向——要求完成请求必须进行更新一步的操作。
-
4xx:客户端错误——请求由语法错误或请求无法实现。
-
5xx:服务端错误——服务未能实现合法请求。
常见状态码说明:
-
200 OK——客户端请求成功。
-
400 Bad Request——客户端请求有语法错误,无法被服务器解析。
-
402 Unauthorized——请求未经授权。
-
403 Forbidden——服务器收到请求,但是拒绝提供服务。
-
404 Not Found——请求资源不存在(输入了错误的URL)
-
500 Internal Server Error——服务器发生不可预期的错误。
-
503 Server Unavailable——服务器当前不能处理客户请求,一段时间后可能恢复。目前http协议的版本号是1.10.2可以通过F12来查看网页的信息。
补充:
有关Cookie的知识:
http协议虽然是无连接的,但是万维网希望识别用户,就需要用到cookie来追踪用户。
Cookie表示HTTP服务器和客户之间传递的状态信息。
1.Cookie的工作原理:
假设用户A浏览某格网站是,该网站的服务器就为A产生一个唯一识别码,并以此为索引在服务器后端的数据库建立一个项目,然后在A的http的响应报文中添加Set-cookie的首部行,首部行后面的值就是A的识别码。假设A的识别码为1234,那么浏览器就添加Set-cookie:1234及服务器的主机名。当A再次浏览这个网页时,浏览器就将他的识别码取出,放在http请求报文中。这样网站就可以跟踪用户的行为了。
需要主要的是,服务器并不知道A的姓名及其他信息,但是服务器知道1234访问了那些页面,访问时间及访问顺序。
2.Cookie用法举例:
在购物时,将你的购物车一起结算。
下次购物时根据你一起的访问记录,向你推荐商品。
3.Cookie的争议:
有人认为Cookie会带入病毒。
这是对Cookie的误解,Cookie只是一个文本文件,并不是可执行程序,因此不会带入病毒,也不会获取用户硬盘中的信息。
涉及到隐私问题,cookie知道A的一些信息,并且可以利用cookie开分析A在互联网的行为。但是有些网站公开会保护用户的信息,并且用户也有拒绝接受cookie的自由。