个人博客


1、浏览器发起http请求过程

  1. DNS解析
    1.1 浏览器缓存
    1.2 查找本地host文件
    1.3 接入互联网的应用提供商的服务器
    1.4 根域名服务器
    1.5 顶级域名服务器
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

2、响应码

响应码原因
1xx指示信息:接收请求正在处理
2xx成功
3xx重定向(Location字段)
4xx客户端错误:报文格式错误
5xx服务端错误:服务器发生未知错误

3、Get、Post请求的区别

GETPOST
请求报文url带参数(可携带信息较少)请求体(可携带报文较大)
安全性不安全相对安全
数据库幂等性符合不符合
其它可以被缓存不能被缓存

4、Cookie和Session的区别

HTTP本身是无状态协议,Cookie和Session是为了保持多次请求在同一个会话中(保持用户状态)。

CookieSession
存储方式客户端以文本方式存储服务端
安全性不安全相对安全
服务器压力

一般Session的使用会依赖于Cookie,因为Session ID存放在Cookie由客户再次请求时带上这个Session ID服务器才能获取到对应的Session。如果浏览器禁用Cookie可以用URL重写把 Session ID直接附加在URL路径的后面。

5、HTTP1.0和HTTP1.1的区别

5.1、长连接

HTTP1.0默认使用短连接即用一次就关闭,打开一个网页需要请求多次静态资源而每次都要重新建立连接进行TCP三次握手四次挥手,这样开销会比较大。所以HTTP1.1默认使用长连接,会在响应头加入这行代码Connection:keep-alive。当然Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

5.2、错误状态响应码

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

5.3、缓存处理

在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

5.4、带宽优化及网络连接的使用

HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

6、HTTP和HTTPS的区别

HTTPHTTPS
端口默认80端口默认443端口
证书不需要需要CA证书
协议基于TCP基于SSL/TLS的HTTP协议,SSL/TLS又基于TCP协议
报文不加密明文加密密文
安全性
资源消耗