HTTP协议
请求头
Content-Type
application/json
: JSON格式的数据application/xml
: XML格式的数据application/x-www-form-urlencoded
: URL编码的表单数据multipart/form-data
: 多部分表单数据,通常用于上传文件text/plain
: 纯文本数据
Connection
keep-alive
: 保持连接close
: 关闭连接upgrade
: 协议升级【一般用于升级为WebSocket或者HTTP/2】
User-Agent
: 可以伪造,且过于混乱- MacOS + Safari:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15
- MacOS + Chrome:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
- MacOS + Safari:
响应头
Content-Type
- HTML:
text/html[;charset=utf-8]
- 纯文本:
text/plain
- JSON:
application/json
- XML:
application/xml
- 图像:
image/jpeg
、image/png
等 - 音频:
audio/mpeg
、audio/wav
等
- HTML:
Content-Length
: 响应体长度Content-Disposition
: 处理响应体的方法inline
【默认】attachment; filename="example.txt"
状态码
- 1xx: 告知请求的处理进度
- 2xx: 成功
200 OK
: 表示请求成功,并返回相应的数据201 Created
: 表示请求成功,并创建了新的资源204 No Content
:表示请求成功,但响应体为空,通常用于DELETE请求
- 3xx: 需要进一步操作
301 Moved Permanently
: 表示请求的资源已经被永久移动到新的位置,需要访问使用新URI302 Found
: 表示请求的资源临时移动到了另一个位置,并且还可能继续改变,需要继续访问当前URI【与301区别在于SEO优化】303 See Other
: 临时重定向,明确要求用GET访问新路径,主要用于POST/PUT操作后的重定向,以避免用户刷新页面时重复提交表单304 Not Modified
: 表示资源未修改,直接使用客户端缓存的版本307
、308
: 规定了重定向时的请求方法不变【HTTP/1.1才引入,导致使用较少】
- 4xx: 客户端错误
400 Bad Request
: 表示客户端发送的请求有错误401 Unauthorized
: 表示用户未认证,需要提供认证信息403 Forbidden
: 表示用户已认证,但缺少执行的权限404 Not Found
: 表示请求的资源不存在405 Method Not Allowed
: 请求的方法不可用415 Unsupported Media Type
: 请求体格式不支持
- 5xx: 服务端错误
500 Internal Server Error
: 表示服务器内部发生错误,无法完成请求502 Bad Gateway
: 服务器作为网关且从上游服务器获取到了一个无效的HTTP响应503 Service Unavailable
: 表示服务器暂时无法处理请求,通常是因为过载或维护504 Gateway Timeout
: 服务器作为网关且不能从上游服务器及时的得到响应返回给客户端
浏览器
本地存储
辨析cookie
, localStorage
, sessionStorage
- 能否传递
cookie
数据始终在同源的http请求中携带,即cookie
在浏览器和服务器间来回传递sessionStorage
和localStorage
不会自动把数据发给服务器,仅在本地保存。
- 存储大小限制不同
cookie
数据不能超过4ksessionStorage
和localStorage
可以达到5M或更大
- 数据有效期不同
sessionStorage
仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持localStorage
始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据cookie
只在设置的cookie
过期时间之前一直有效,即使窗口或浏览器关闭
- 作用域不同
sessionStorage
不在不同的浏览器窗口中共享,即使是同一个页面localStorage
与cookie
在所有同源窗口中都是共享的