前端 HTTP内容1
1. HTTP/1.0 1.1 2.0 3.0的区别
- http1.0:最初的标准,每次请求都需要一次TCP连接。
- http1.1:实现了TCP长连接,即一个TCP连接可以发送多次http请求,但会导致请求的对头阻塞,例如:某一个请求耗时较长,后续的请求即使到达并被处理了也需要等待上个请求成立完成才能继续。
- http2.0:实现了多路复用,即一个TCP请求可以并发处理多个请求,解决了1.1的请求队头阻塞,但底层仍存在TCP的队友阻塞问题(若传输过程中某个请求的一个数据包丢失,其余请求必须等待这个数据包重传,才能继续)。
- http3.0:基于UDP的quic协议。该协议实现了流,多条独立的流,若一个流上的某个请求的数据包丢失,指挥阻塞这条流上的请求,不会对其他流产生影响。
2. HTTP常见的状态码
- 200 OK:请求成功
- 201 Created:post新建资源成功
- 301 永久重定向:资源位置永久改变,浏览器会缓存
- 302 临时重定向:临时跳转,常见于登录后跳转
- 304 Not Modified:协商缓存,资源未修改,用于优化性能
- 400 Bad Request:请求参数错误
- 401 Unauthorized:未认证或token无效
- 403 Forbidden:认证了但没有权限
- 404 Not Found:资源不存在
- 500 Internal Server Error:服务端程序错误
- 502 Bad Gateway:网关/代理收到无效响应(常见于Nginx)
- 503 Service Unavailable:服务不可用,通常是服务过载或维护
3. HTTP请求头中包含什么
- 请求行:请求方法(GET/POST)+请求目标(URL地址)+协议版本
- 首部字段(Header):以键值对的形式存储,一行一个键值对,包括Host(服务器域名),User-Agent(客户端身份,比如浏览器型号),Accept(客户端能接受的数据形式),Cookie(客户端存储的身份信息,唯一的ID),Content-Type(客户端告知服务器请求体的数据格式)
- 空行:表示请求头结束
- 请求体:包括JSON格式的数据
GET /obj/data-static/log-sdk/collect/5.0/collect-rangers-v5.2.1.js HTTP/2 Host: lf3-data.volccdn.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate, br, zstd Connection: keep-alive //长连接打开字段 Referer: https://chat.deepseek.com/ Sec-Fetch-Dest: script Sec-Fetch-Mode: no-cors Sec-Fetch-Site: cross-site
4. 什么是重定向?重定向和请求转发的区别
重定向是指服务器返回 3xx 状态码 + Location 头,告诉浏览器“目标搬到另一条 URL 上”。浏览器随后会自动再发一次请求到新的地址。其主要特点为:
- 两次 HTTP 往返:第一次请求原地址 → 3xx;第二次请求新地址 → 200 • 地址栏会改变,用户可看到跳转后的 URL • 可以跨域跨站跳转(A 站 → B 站) • 原request作用域的数据丢失,只能依靠 URL 参数 / Cookie / Session 传递信息
而请求转发是指全程发生在服务器内部:Web 容器把 同一次客户端请求 交给另一个资源(Servlet、JSP、Controller …)继续处理,客户端毫不知情。其主要特点为:
- 只产生一次 HTTP 请求;浏览器不知道发生过转发 • URL 不变,依旧显示最初输入的地址 • 只能在同一台服务器、同一 Web 应用内部使用 • 同一份request/response对象被下游资源共享 → 可以用request.setAttribute()传对象
总结:重定向是指服务端返回3XX状态码,原本的地址已被修改,让服务端重新发送新的url地址,需要浏览器发起二次请求;而请求转发则是在服务器内部,将同一个请求转发到别的资源进行处理,浏览器毫不知情,也就是无需浏览器再次发送请求。
5. get和post有什么区别
- 从概念上:GET是从服务器获取数据,不会修改数据;POST则是提交数据给服务器进行处理; 2.从安全上:GET将数据直接拼接在URL请求后面,安全性低,而POST请求是指数据放在请求体中,不会暴露在URL地址中,安全性更高; 3.从幂等性上:GET是幂等的,多次提交的结果是相同的;POST是非幂等的,多次提交可能产生不同的效果;...展开

字节跳动公司福利 1347人发布