今天讨论一下HTTP协议。一个做前端的,如果连HTTP协议都不了解,那实在是太不合格了。
首先,什么是HTTP?Hyper Text Transfer Protocol(超文本传输协议),用在浏览器和Web服务器之间传输超文本网页。1991年,由IETF这个团体发布了第一个版本——HTTP/0.9,但它有严重的设计缺陷,只支持“GET”方法,不支持MIME类型,很快的就被HTTP/1.0取代。而1996年发布的这个HTTP/1.0也存活的并不长久,虽然是第一个正式发布的稳定版本。1999年,HTTP/1.1诞生,直到现在一直通用(虽然有HTTP/2.0出现了,但还处于研究阶段,并不完善)。
HTTP/1.1一颁布,有趣了,它新增了三个举足轻重的功能。
1、虚拟主机。以前网页少,一台服务器存一个站点也就无所谓了,可后来随着互联网的飞速发展,发现不行了,而虚拟主机可以让一个Web服务器中可以并存多个站点。
2、持久连接。一次请求完成后,和服务器不马上断开连接,保持一会再断开。具体表现在Connection:keep-alive,后面会提到。
3、代理连接。客户端可以通过代理服务器,间接访问目标服务器。
一、请求方法
开始正题,先来讲讲8个请求方法。
GET:表示客户端想获得服务器上的资源。(无请求主体)
POST:表示客户端想传递数据给服务器。(有请求主体)
PUT:表示客户端想放置文件到服务器。(有请求主体)(在restful架构下使用)
DELETE:表示客户端想删除服务器上的指定文件。(无请求主体)(在restful架构下使用)
HEAD:表示客户端想获得服务器上指定资源的响应头部,不要详细的内容。(无请求主体)
CONNECT:连接测试。(无请求主体)
TRACE:追踪请求路径。(无请求主体)
OPTIONS:决定可以在服务器上执行哪些方法。(无请求主体)
二、请求消息
请求消息就是客户端发给服务器的消息。分为四部分,请求起始行、请求头、CRLF、请求主体。
1、请求起始行(Start line)
首先是请求方法:就是上面说的8个。(后跟空格)
然后是请求URL:请求资源路径。(后跟空格)
最后是协议
2、请求头(Headers)
3、CRLF(回车换行)
4、请求主体(Body)
请求消息中,我们着重来讲讲请求头。它分为4种类型:
请求消息专用头(部分):
1、HOST:主机名(ex:XXX.com)
2、Accept:告诉服务器自己可以响应的内容类型(ex:text/html)
3、Origin:告诉服务器当前请求来自哪个域名(ex:http://127.0.0.1)
4、Referer:告诉服务器当前请求来自哪个页面(ex:http://127.0.0.1/index.html)
5、User-Agent:客户端在告诉服务器自己的类型(ex:Chrome 5.0)
6、Accept-Encoding:浏览器在告诉服务器自己接收的响应数据编码类型(ex:gzip<压缩类型>)
7、Accept-Language:告诉服务器自己可以接收的自然语言(ex:zh-CN<中文>)
请求(响应)消息通用头(部分):
1、Cache-Control:告诉对方如何缓存消息(ex:no-cache/max-age=0)
2、Connnection:告诉对方启用持久连接(ex:keep-alive)
3、Pragma:相当于Cache-Control,只不过是HTTP/1.0版本的(ex:no-cache)
4、Date:消息的创建时间(ex:Sun,11 Dec 2016 00:09:09 GMT)
请求主体描述头(部分):
1、Content-Length:请求主体的长度
2、Content-Type:请求主体的内容类型
Content-Type的取值有三个:
(1)、text/plain 普通文本,未经编码。
(2)、application/x-www-form-urlencoding 经过编码后的数据。
(3)、multipart/form-data 包含上传的文件数据。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com