http协议学习
原文链接:https://forum.juejin.cn/youthcamp/post/7054537769695215630?from=1
第一次的课程是跟着韩老师一起复习前端HTML方面的知识。前端最基本的技术包括HTML(内容)、CSS(样式)和JavaScript(行为),然后通过网络协议与服务端进行通信,从而讲页面呈现在浏览器当中。其中就设计到了计算机通信和原理方面的知识,包括http协议、计算机通信中的TCP/IP协议等,当然还有浏览器方面的知识,比如如何讲html文件资源等渲染从而呈现在浏览器页面上。我觉得学习前端虽然入门简单,但绝对不是一件很容易的事情,需要不断学习扩宽知识面,以下是我学习并总结的HTTP协议方面知识。
一、HTTP协议建立、请求和响应
HTTP协议是计算机协议中的一种,属于计算机通信中的应用层协议,一式双份、多份;协议双方多方都遵从共同的一个规范。
HTTP协议定义了Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型:客户端向服务器发送一个请求报文,请求报文包含请求行(请求的方法、URL、协议版本)、请求头部和请求数据;服务器以一个状态行作为响应,响应的内容包括响应行(协议的版本、成功或者错误代码、服务器信息)、响应头部和响应数据。
①HTTP协议建立的过程
HTTP协议建立的过程由一下几个步骤:(当然还包括DNS域名解析、TCP三次握手、浏览器渲染等内容,这里面只是概述了协议建立的主要过程,果然知识是错综复杂的,这里我还是主要关注HTTP协议这一部分内容)
0.原始状态:客户端和服务器之间没有关系;
1.客户端建立连接,发送请求;
2.服务端沿着连接,返回响应信息;
3.两者断开连接,虚拟电路消失。
4.客户端浏览器解析HTML内容
补充:HTTP协议是一种无状态保存,自身不对请求和响应直接的通信状态进行保存;于是现在引入了cookie、session和token技术来对状态进行管理。
②HTTP请求信息的格式
HTTP请求信息由以下三部分组成:请求行、请求头和请求体。
image.png
请求行
请求方法
包括GET POST DELETE TRACE OPTIONS
POST比GET多了主体信息
头信息里,要表明主体的长度content-length
POST需要加上content-type:application/x-www.form-urlencoded
请求路径
所用的协议版本
请求头部信息(与主体信息空一行)
请求主体信息(可以没有)
③HTTP响应信息的格式
HTTP响应信息由以下三部分组成:响应行、响应头和响应体。
响应行
协议版本
状态码
状态文字
响应头信息(与主体信息空行)
key:value
content-length:接下来主体的长度
响应主体信息
二、HTTP协议请求方法有哪些
主要包括:GET POST HEAD PUT TRACE DELETE OPTIONS
注意:这些请求方法虽然HTTP协议里面规定的,但WEB SERVER未必允许或支持这些方法,个人猜测原因是保证服务器安全。
1.HEAD和GET基本一致,只是不返回内容
比如我们只是确认一个内容(比如照片)还正常存在,不需要返回照片内容,这时用HEAD比较合适。
2.GET
url问号?后面是请求的信息,因此数据容易暴露
3.POST
向指定服务器提交资源,与GET不同,在请求体中需要包含POST要提交的信息,比如表单信息。
4.TRACE:使用用了代理上网后,比如代理访问news.163.com,可以查看代理有没有修改客户端的HTTP请求
可以用TRACE来测试一下,163.com的服务器就会把最后收到的请求返回给你
5.OPTIONS:返回服务器可用的请求方法
外部服务器可能不允许使用这些请求方法
三、HTTP状态码,状态文字
以前遇到404Not Found时候知道是服务器未找到对于请求文件,但是不知道404是HTTP响应行中的状态码,通过学习知道更多的状态码,包括200OK、重定向等。
总结就是:状态码是用来反应服务器响应情况的,响应行中还包括状态文字,是用来描述状态码的,便于我们观察。以下是各种状态码的总结和说明:
HTTP状态码反映了Web服务器处理HTTP请求状态。HTTP应答码由3位数字构成,其中首位数字定义了应答码的类型:
1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX - 重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX - 客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX - 服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500
以上是在学习韩老师课程后,我课下进行学习总结的笔记,关于笔记中提到的cookie、session和token技术来对状态进行管理相关知识还需要进一步学习和总结。