前言
最近在看nodejs
,发现需要很多http
相关的知识,就去找了本「图解HTTP」
看,
记录下自己觉得比较重要的知识点
URI格式
http:// | user:passwd | @www.cheesekun.top | :80 | /dir/index.html | ?uid=1 | #ch1 |
---|---|---|---|---|---|---|
协议方案名 | 登录信息 | 服务器地址 | 服务器端口 | 文件路径 | 查询字符串 | 片段标识符 |
http首部字段
由于字段类别很多,只挑选了一些打开网页常见的字段
General(通用首部字段)
请求报文和相应报文都会使用的首部
首部字段名 | 说明 | 某参数 | 作用 |
---|---|---|---|
Connection | 逐跳首部,连接的管理 | keep-alive | 客户端与服务器进行持久连接,可用参数close断开 |
Request(请求首部字段)
从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容,客户端信息,响应内容相关优先级等信息
首部字段名 | 说明 | 参数 | 作用 |
---|---|---|---|
Accept | 用户代理可处理相对优先级的媒体类型 | text/html,application/xhtml+xml,image/webp,/;q=0.8 | 优先采用text和html格式,q为优先权重值 |
Accept-Encoding | 优先的内容编码 | gzip,deflate,sdch | 支持gzip等内容编码及其优先级 |
Accept-Language | 优先的语言(自然语言) | zh-CN,zh;q=0.8,en-us,en; | 优先中文 |
Content-Length | 实体主题的大小(单位:字节) | ||
Host | 请求资源所在的服务器 | ||
Referer | 对请求中URI的原始获取方 | https://www.google.com | 该页面是在google链接而来 |
User-Agent | HTTP客户端程序的信息 | ||
X-Request-With | 客户端的请求是Ajax请求还是其他请求 |
Response(响应首部字段)
从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息
首部字段名 | 说明 | 某参数 | 作用 |
---|---|---|---|
Accept-Ranges | 是否接受字节范围请求 | ||
Content-Type | 实现主体的媒体类型 | ||
Date | 创建报文的日期时间 | ||
ETag | 资源的匹配信息 | "一串字符" | 标识所有资源 |
Expires | 实体主体过期的日期时间 | 一个日期 | 缓存超过该日期会从源服务器获取资源 |
Location | 转移URI指向 | 一个URI | 配合3xx,重定向提示转移URI路径 |
Last-Modified | 资源的最后修改日期时间 | ||
Pragma | 报文指令 | no-cache | 兼容http1.0,http1.1使用Cache-Conrol:no-cache,表示不接收缓存 |
Transfer-Encoding | 指定报文主体的传输编码方式 | chunked(分块) | 分块传输编码 |
Vary | 代理服务器缓存的管理 | Accept-Language | 从代理服务器拿取A-L的缓存,若无,则从源服务器拿 |
Enitity(实体首部字段)
针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息
HTTP状态码
状态码告知从服务器端返回的请求结果
状态码 | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
2XX 成功
200 OK:表示客户端的请求被服务器成功处理
204 No Content:该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回 204 响应,那么浏览器显示的页面不发生更新。
206 Partial Content:该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range 指定范围的实体内容。
3XX 重定向
3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently:永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。也就是说,如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存。
302 Found:临时性重定向:该状态码表示请求的资源已被分配了新的URI,希望用户本次请求能使用新的URI。302和301很相似,302表示的URI并不是永久性移动,换句话说就是URI还有可能发生变化。
303 See Other:该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源。303和302有着相似的功能,他们之间的区别是303状态码表示明确客户端采用GET请求获取资源
304 Not Modified:该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304状态码返回时,不包含任何响应的主题部分。跟重定向没有关系。
4XX客户端错误
4XX响应结果表示错误发生在客户端
400 Bad Request:该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。
401 Unauthorized:该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。
403 Forbidden:该状态码表明对请求资源的访问被服务器拒绝了。
404 Not Found:该状态码表明服务器上无法找到请求的资源。
5XX服务器错误
5XX 的响应结果表明服务器本身发生错误。
500 Internal Server Error:该状态码表明服务器端在执行请求时发生了错误。
503 Service Unavailable:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
结语
挺好的一本书,172张图片也特别帮助理解。
原文:cheesekun.top
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。