
导语很多人第一次学习 HTTP 的时候都会有一个感觉看起来每个概念都认识但连在一起之后却不知道它到底在解决什么问题。浏览器输入一个网址回车之后页面就出来了中间没有任何提示也没有手动操作。这一过程背后其实是浏览器和服务器之间完成了一次标准化的通信而 HTTP 就是这套通信规则。一、HTTP到底在做什么HTTP 本身并不负责传输数据也不负责页面展示。它做的事情其实很单一浏览器和服务器之间约定“怎么说话”。比如浏览器说我要这个页面服务器说好的这是内容就是这样一来一回。真正的数据传输是 TCP 在做网页展示是浏览器在做HTTP只是规则。二、浏览器访问网页时发生了什么当你在浏览器输入一个网址时大致会发生三个步骤。首先是建立连接浏览器会先和服务器建立通信通道。然后浏览器会发送一个请求例如GET /index.html HTTP/1.1 Host: www.example.com意思很简单就是告诉服务器“我要这个页面”。服务器收到之后会返回对应的内容例如HTTP/1.1 200 OK Content-Type: text/html html.../html浏览器再把这些内容解析成我们看到的网页。整个过程就是一次标准的请求和响应。三、HTTP报文的结构HTTP通信的内容分为请求和响应两者结构是类似的。请求一般包括三部分请求行、请求头和请求体。比如登录请求POST /login HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded usernameadminpassword123响应也是类似结构包括状态行、响应头和响应体HTTP/1.1 200 OK Content-Type: text/html html.../html请求告诉服务器“我要什么”响应告诉客户端“结果是什么”。四、HTTP方法是做什么用的HTTP方法其实就是在告诉服务器“你想干什么”。最常见的是 GET 和 POST。GET 用来获取数据比如访问网页。POST 用来提交数据比如登录或者上传表单。PUT 和 DELETE 分别用于更新和删除资源。在实际开发中GET 和 POST 是使用频率最高的两个方法。五、HTTP状态码表示什么服务器返回的状态码用来告诉浏览器请求的结果。200 表示成功请求正常完成。301 和 302 表示重定向资源发生了变化。404 表示找不到资源通常是请求路径错误。500 表示服务器内部错误一般是后端问题。这些状态码的意义在于让客户端知道请求是否成功以及失败原因是什么。六、HTTP为什么是无状态的HTTP有一个重要特点不会记录之前的请求。每一次请求都是独立的服务器不会记住用户。这就带来一个问题比如登录之后刷新页面服务器怎么知道还是同一个人HTTP本身无法解决这个问题因此需要额外机制。七、Cookie是用来解决什么问题的Cookie的作用是让HTTP“记住用户”。用户登录成功后服务器会返回Set-Cookie: user_id12345浏览器会保存这个信息。之后每一次请求都会自动携带Cookie: user_id12345服务器通过这个信息识别用户身份。本质上HTTP不具备记忆能力而Cookie补上了这一点。八、HTTP存在的三个问题HTTP最大的问题不是功能而是安全。第一所有数据都是明文传输在网络中可以被直接看到。第二无法确认对方身份可能访问的是假服务器。第三数据可能在传输过程中被篡改。例如页面内容被替换或者下载文件被植入恶意代码。这些问题在现代互联网环境中是无法接受的。九、为什么HTTP必须升级为HTTPS随着互联网变成开放环境HTTP的安全问题越来越明显。因此必须引入加密、身份验证和完整性保护。HTTPS就是在HTTP基础上增加了一层安全机制。它解决三件事数据不被偷看服务器身份可信数据不被篡改十、HTTP的整体流程从整体来看浏览器和服务器的通信过程如下浏览器发起请求HTTP负责定义请求格式服务器返回响应HTTP负责定义返回格式浏览器解析数据并展示页面HTTP只是中间的规则层。十一、HTTP的本质HTTP就是浏览器和服务器之间约定好的沟通方式。它不负责安全不负责传输效率也不负责页面展示。它只是让双方能“说同一种语言”。十二、写在最后HTTP解决的是能不能通信的问题而HTTPS解决的是能不能安全通信的问题。理解HTTP之后再去理解HTTPS会更容易明白为什么需要加密、证书和密钥协商。整个Web的发展本质上就是从“能通信”走向“安全通信”的过程。