
认识请求"报头(header)"
header 的整体结构格式也是"键值对"结构。每一行是一个键值对,键和值之间使用空格分割。
Host
表示服务器主机的地址和端口。

Content-Length
表示body中的数据长度,单位是字节。
对于TCP来说,一个连接上可以发送多个请求。服务器这边收到数据就得区分一下,数据是从哪里到哪里是一个完整的http请求数据。
原理:
- 如果没有body的http请求,读到空格,就是标志结束。
- 有body的http请求,先读取首行和header,再读到空行;在解析header中的Content-Length根据这里解析的值,来判断接下来读取的固定字节的长度。
Content-Type
表示请求的body中的数据格式。
约定了接收方如何解析body中的数据

注意: 请求和响应都会用到 Content-Type,如果有body,并且没有这两个属性都认为是非法的/错误的http报文。
User-Agent(简称UA)
表示浏览器/操作系统的属性。
格式如下:

Referer
表示这个页面是从哪个页面跳转过来的。

Cookie
Cookie就是浏览器允许网页在本地硬盘存储数据的一种机制,不是让网页代码直接访问文件系统,而是通过Cookie进行间接访问。

状态码
状态码表示访问⼀个页面的结果。 (是访问成功, 还是失败, 还是其他的⼀些情况...)。
200 OK
这是⼀个最常见的状态码, 表示访问成功。
404 Not Found没有找到资源。浏览器输⼊一个 URL, ⽬的就是为了访问对方服务器上的⼀个资源. 如果这个 URL 标识的资源不存在,那么就会出现 404。
403 Forbidden表示访问被拒绝. 有的页面通常需要用户具有⼀定的权限才能访问(登陆后才能访问). 如果用户有登陆直接访问, 就容易见到 403。
405 Method Not Allowed若请求的方法和服务器这边声明的注解不匹配,就会出现405.
500 Internal Server Error服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码。
504 Gateway Timeout当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况。
302 Move temporarily临时重定向。在登陆页面中经常会见到 302. 用于实现登陆成功后自动跳转到主页。
301 Moved Permanently永久重定向。当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址。
状态码小结:
HTTPS
明文加密得到密文,密文解密得到明文。

证书: 服务端在使用HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。
这个证书可以理解成是一个结构化的字符串, 里面包含了以下信息:
• 证书发布机构
• 证书有效期
• 公钥
• 证书所有者
• 签名
• ...
需要注意的是:申请证书的时候,需要在特定平台⽣成查,会同时生成一对密钥,即公钥和私钥。这对密钥就是用来在网络通信中进行明文加密以及数字签名的。






