本文主要是讲一些HTTP常见的问题,可能不够系统,欢迎小伙伴们指出。
如果后续有时间,我会从底层详细梳理一下TCP/IP协议栈的内容。
主要内容
- HTTP状态码
- HTTP的短连接、长连接
- HTTP是无状态的,怎么保持状态
- HTTP和HTTPS
- HTTP/2.0
- GET和POST的区别
1、HTTP状态码
常见的状态码
1XX
100 Continnue:表面到目前为止都很正常,客户端可以继续发送请求
2XX
200 OK:请求被正常处理
204 No Content:客户端的请求被服务器正常处理,服务器没有内容可返回
206 Partial Content:表示客户端进行了范围请求,服务器返回由Content-Range指定范围的内容
3XX
301 Moved Permanently:永久重定向,表示资源被永久的移动到了其他为止,也就是说重新分配了URL
302 Found:临时重定向,表示所请求资源暂时分到了新的URL
303 See Other:和302类型,但是明确要求客户端采用GET方法获取资源。
注:有关于GET和POST的区别,后续文章会指明
307 Temporary Redirect:临时重定向,和302类似 ,但是要求浏览器不能将重定向请求的POST方法改为GET方法。
4XX
400 Bad Request:客户端请求中有语法或参数错误,服务器无法识别
401 Unauthorized:请求中需要有认证信息。如果已经发送过一次该请求,则表示用户认证失败。
403 Forbidden:请求的资源禁止被访问
404 Not Found:服务器找不到客户端请求的资源(也可能是不想让客户端访问)
5XX
500 Internal Server Error:服务器内部错误
503 Service Unavailable:服务器暂处于超负载或停机维护,无法处理请求。
2、短连接还是长连接?
重点:
我们所说的HTTP的长连接、短连接本质上是TCP的长短连接,因为TCP是双全工的,可以保持一段时间不关闭。说到底HTTP是一个应用层协议,而TCP才是传输层协议。
短连接
短链接就时说当浏览器访问到的某个HTML或其他类型的Web页面中包含有其他的Web资源(如js文件,图片文件,css文件等),那么每次请求这样一个web资源,都会建立一个Http会话。
优点:管理简单,存在的都是有效连接,不需要额外的控制
缺点:如果用户请求频繁,那么会在TCP的建立和断开上消耗很多时间和带宽
适用场