前言前言最近在看nodejs,发现需要很多http相关的知识,所以就去这篇《图解HTTP》看了一下,把自己认为的知识点记录下来更重要的URI格式http://user:passwd@www.cheesekun.top:80/dir/index.html?uid=1#ch1协议方案名称登录信息服务器地址服务器端口文件路径查询字符串片段标识符HTTP头字段自字段类型有很多,只选了一些打开网页的通用字段General(通用头字段)。请求报文和对应报文都使用的第一个头字段名表示一个参数作为Connection报头byhops,连接管理keep-alive客户端与服务端持久连接。可用参数close断开请求(请求头字段)从客户端发送到服务器时使用的头。补充了请求的附加内容,客户端信息,响应内容相关优先级等信息头字段名描述参数角色Accept用户代理可以处理相对优先级的媒体类型text/html,application/xhtml+xml,image/webp,/;q=0.8text和html格式优先,q为优先权重值Accept-Encoding优先内容编码gzip,deflate,sdch支持gzip等内容编码及其优先Accept-Language优先语言(自然语言)zh-CN,zh;q=0.8,en-us,en;PriorityChineseContent-Lengthentitysubjectsize(unit:byte)Host请求资源所在服务器Referer请求中URI的原始获取者https://www.google.com此页面链接自GoogleUser-AgentHTTP客户端程序信息X-Request-With客户端的请求是Ajax请求或其他请求Response(响应头字段)用于返回响应报文时eserver到client的第一个。对响应的附加内容进行补充,同时要求客户端增加附加内容信息。头域名称表示一个参数的作用。Accept-Ranges接受字节范围。RequestContent-Type实现主体的媒体类型Date创建消息ETag资源的日期和时间匹配信息“一串字符”标识所有资源的实体主体Expires过期的日期和时间。如果日期缓存超过此日期,将从源服务器获取资源。位置传输URI指向一个URI。使用3xx,重定向提示Last-Modified资源的传输URI路径。最后修改日期和时间Pragma消息指令no-cache兼容http1.0,http1.1使用Cache-Conrol:no-cache,表示Transfer指定的消息体的传输编码方式chunked(blocked)-未收到编码。TransferencodingVaryproxyservercachemanagementAccept-Language从代理服务器获取A-L缓存,如果没有,从源服务器获取用于请求报文和响应报文的实体部分的Enitity(实体头字段)头。添加资源内容更新时间等实体相关信息HTTP状态码状态码告知服务器返回的请求结果状态码类别原因短语1XXInformational(信息性状态码)收到的请求正在处理中2XXSuccess(成功状态码)请求是normalProcessingcompleted3XXRedirection(重定向状态码)需要额外操作完成请求4XXClientError(客户端错误状态码)服务器无法处理请求5XXServerError(服务器错误状态码)服务器处理请求错误2XXsuccess200OK:表示客户端的requestSuccessfullyprocessedbytheserver204NoContent:该状态码表示服务器收到的请求已成功处理,但返回的响应消息中不包含实体正文。此外,不允许返回任何实体的主体。例如,当浏览器处理请求并返回204响应时,浏览器显示的页面将不会更新。206PartialContent:该状态码表示客户端进行了范围请求,服务器成功执行了这部分GET请求。响应消息包含Content-Range指定范围内的实体内容。3XX重定向3XX响应结果表明浏览器需要进行一些特殊处理才能正确处理请求。301MovedPermanently:永久重定向。这个状态码表示请求的资源已经分配了一个新的URI,将来应该使用资源现在引用的URI。也就是说,如果你已经将该资源对应的URI保存为书签,你应该根据Location头域提示的URI重新保存。302Found:Temporaryredirection:这个状态码表示请求的资源已经分配了一个新的URI,希望用户可以使用这个新的URI进行本次请求。302和301很相似,302所代表的URI并没有被永久移动。换句话说,URI可能会改变。303SeeOther:该状态码表示请求对应的资源还有另一个URI,应该使用GET方法获取请求的资源。303和302的功能相似。它们的区别在于303状态码表示客户端使用GET请求获取资源。304NotModified:该状态码表示当客户端发送条件请求时,服务器允许该请求访问资源。但是条件不满足。返回304状态代码时,不包含响应的主题部分。与重定向无关。4XXclienterror4XX响应结果表示错误发生在客户端。400BadRequest:该状态码表示请求消息中存在语法错误。当出现错误时,需要修改请求内容,重新发送请求。此外,浏览器将此状态代码视为200OK。401Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。403Forbidden:此状态代码表示对所请求资源的访问已被服务器拒绝。404NotFound:这个状态码表示在服务器上找不到请求的资源。5XXservererror5XX的响应结果表明服务器本身发生了错误。500InternalServerError:该状态码表示在执行请求时服务器端发生错误。503ServiceUnavailable:该状态码表示服务器暂时过载或正在停机维护,现在无法处理请求。结语是一本很好的书,172张图对理解特别有帮助。原文:cheesekun.top
