当前位置: 首页 > 后端技术 > Node.js

HTTP协议前端常识

时间:2023-04-03 15:53:51 Node.js

http介绍:http是基于tcp/ip通信传输数据的注意事项http是无连接的:每个连接只处理一个请求,服务器处理完请求并收到客户端的响应后,它立即断开连接;http媒体是独立的:只要客户端和服务器知道如何处理数据类型,任何数据都可以通过http传输;httpstateless:无状态是指协议对事务处理没有记忆能力;消息结构1、http客户端请求包括:请求行、请求头、空行和请求数据2、http响应:状态行、消息头、空行、响应文本http请求方法http1.0:get、post和headhttp1。1新增五种请求方法:delete、put、connect、tarce、options方法说明get向特定资源发起请求post提交数据到指定资源进行数据处理。数据包含在请求正文中。发布请求可用于创建新资源和修改现有资源。head与get请求类似,只是没有returnbody。用于获取响应头中包含的元信息。puttothespecifiedResourceuploadlatestcontentdeleterequestserver删除指定资源traceechorequest服务器收到,主要用于测试或诊断connecthttp1.1为代理服务器预留选项,可将连接更改为管道模式返回服务器对特定资源的支持http方法,用于向服务器发送'*'请求以测试服务器的功能使用的标头描述了Connection允许客户端和服务器指定与请求/响应连接相关的选项Date提供日期和时间标记,指示消息创建的时间MIME-Version给出MIME版本Trailer如果报告则发送到最后文件传输采用chunked传输编码方式,这个header可以用来列出位于消息拖动部分的headersetTransfer-Encoding告诉接收端消息使用什么编码,以确保消息的可靠传输方法Update表明发送方可能想“升级”以使用新版本或协议通过显示中间节点(代理,网关)消息通过。请求头是请求报文特有的,为服务器提供了一些额外的信息,比如客户端想要接收什么类型的数据?请求的信息标头在标头中描述。Client-Ip提供正在运行的客户端机器的IP地址。From提供客户端用户的电子邮件地址。Host提供接收请求的服务器的地址和端口号。Referer提供当前URLUA-color请求URL的文档提供客户端显示器的显示颜色信息UA-CPU提供客户端CPU类型和制造商的信息UA-Disp提供客户端显示器的能力信息UA-OS提供客户端机器上运行的操作系统和版本UA-Pixels提供客户端显示的像素信息。User-Agent通知服务器发送请求的应用程序名称。AcceptHeaderHeaderDescriptionAccept告诉服务器可以发送哪些媒体类型。Accept-Charset告诉服务器可以发送哪些字符。设置Accept-Encoding,告诉服务器可以发送哪些编码方式。Accept-Language告诉服务器可以发送哪些语言。TE告诉服务器可以使用哪些扩展传输编码条件。请求标头说明Expect允许客户端列出请求所请求的服务器行为If-Match如果实体标签与文档的当前实体标签匹配,则获取文档If-Modify-Since除非资源在指定日期之后被修改,否则限制requestIf-None-Match如果实体标签与文档的当前实体不匹配,则获取文档If-Range允许有条件的请求If-Unmodified-Since对文档的某个范围,除非在指定的日期之后资源有没有被修改,否则请求将被限制。Range如果服务器支持范围请求,将请求指定范围的资源。安全请求受标头的约束。标题描述Authorization包含提供给服务器的客户端数据,以验证其自己的数据。Cookie由客户端使用。它希望服务器发送令牌——它不是真正的安全标头,它确实暗示了安全功能。Cookie2用于表示请求方支持的Cookie版本。代理请求头描述了到服务器途中的Max-Forward。在路径上,请求被转发到其他代理或网关的最大次数————与TARCE方法一起使用Proxy-Authorization与Authorizationheader相同,但此header与Proxy-Connection和Connection相同与代理进行身份验证时使用的标头,但此标头是与代理建立连接时使用的响应标头。响应消息有自己的一组标头,用于向客户端提供信息。响应头的信息头描述了Age(从初始创建开始)响应持续时间Publickserver其资源支持的请求方法列表Retry-After如果资源不可用,在这个日期或时间重试Server的名称和版本服务器应用软件Title对于html文档,是HTML文档的来源给出的标题Wraning比警告消息协商头中的原因短语更详细HeaderDescriptionAccept-Ranges对于这个资源,可以接受的数据类型服务器Vary服务器可能会通过查看其他标头列表来更改响应;也就是说,这是一个header列表,服务端会根据这些header的内容选择最合适的资源版本发送给客户端。安全功能;您可以在客户端上设置一个安全令牌,以通过服务器标记客户端。Set-Cookie2类似于Set-CookieWWW-Authenticate来自服务器到客户端的查询列表EntityHeaderEntityHeader用于实体主体部分的头部ContentHeaderHeaderDescriptionContent-Base解析body中的相对URL时使用的baseURLContent-Enconding任意编码对主题Content-Language执行的方法理解body使用Content-Length时使用的最合适的自然语言。身体的长度或大小。Content-Location资源实体的位置。Content-MD5主体的MD5校验和。Content-Range该实体所代表的资源范围在整个资源中。Content-TypeThis主题的对象类型EntityCacheHeaderDescriptionETag与该实体相关的实体标签Expires实体不再有效,应从原始源重新获取该实体的日期和时间Last-Modified的该实体最后修改的日期和时间Status?状态码为客户端了解交易结果提供了一个捷径。100-199:Informationalstatuscode状态码原因短语含义100Continue意味着客户端请求的初始部分已经收到。Pleasecontinuetosendthisstatuscodeaftertheservice终端收到请求后必须响应101SwitchingProtocols表示服务器正在根据客户端的规范将协议切换到Update头中列出的协议200-299:成功状态码当客户端发送请求,这些请求通常是成功的StatusCodeReasonPhraseMeaning200OK请求没有问题,实体主体包含请求的资源201Created用于创建服务器的对象请求(如PUT),并且响应的实体部分应包含引用已创建资源的URL和位置。标头包含最具体的引用,并且服务器必须在发送此状态之前创建一个对象。202Accepted请求已被接受,但服务器尚未对其执行任何操作。不能保证服务器会完成请求,这只是意味着当请求被接受时,它似乎是有效的。服务器应在实体正文中包含对请求状态的描述,也许还包括对请求完成时间的估计(或包含指向可获取此信息的位置的指针)203包含在非权威信息实体头不是来自源服务器,而是来自资源的副本。如果中间节点有资源的副本,但不能或不验证与它发送的资源相关的元信息(头),就会发生这种情况。204NoContent响应消息包含几个标题和一个状态行,但没有正文部分。主要用于在没有转换为新文档时更新浏览器(如刷新表情页面)。205ResetContent是另一个主要用于浏览器的代码。负责告诉浏览器清除当前页面中的所有html标签。206PartailContent成功执行了部分或范围请求。后面我们会看到,客户端可以通过一些特殊的header获取到一些或者一个范围的文件——这个状态码表示范围请求的成功响应必须包含Content-Range、Date和ETag或者Content-LocationHeader300-399:重定向状态代码重定向状态代码要么告诉客户端使用备用位置访问他们感兴趣的资源,要么提供备用响应而不是资源内容。如果资源已被移动,则可以发送重定向状态代码和可选的Location标头以通知客户端资源已被移动以及现在可以在哪里找到它。状态码原因短语含义300MultipleChoices客户端请求实际上是一个指向多个资源的URL时会返回这个状态码,比如服务器上的一个HTML文档有中文和英文版本。返回此代码时会有一个选项栏;以便用户可以在请求URL已移动时选择他希望永久使用的301Moved。响应的Loaction标头包含资源所在的URL。302Found类似于301;但客户端应使用Location标头中给出的URL来获取临时位置资源。以后的请求会使用旧资源303SetOhter告诉客户端应该使用另一个URL来获取资源。新的URL资源位于响应消息的Location标头中。它的主要目的是允许POST请求的响应将客户端定向到某个资源。304NotModify客户端可以通过包含的请求标头使其请求有条件。如果客户端发送GET请求,资源最近没有变化,这个状态码可以用来表示资源没有被修改。具有此状态代码的响应不应包含实体部分305UseProxy以指示必须通过代理访问资源。代理的位置由Location给出。客户端相对于特定资源解析此响应非常重要,不能假设所有请求,甚至所有对持有请求的服务器的请求都是通过此代理进行的。如果客户端错误地允许代理干预请求,可能会导致破坏性行为,从而可能导致安全漏洞。306UnusedUnused307TemporaryRedirect类似于301状态码;但是客户端应该使用Location标头中给出的URL来。是时候定位资源了。未来的资源应该使用旧的URL400-499:客户端错误状态代码有时客户端会发送服务器无法处理的内容,例如格式错误的请求消息,或者最常见的是不存在的URL状态代码。短语含义400BadRequest用于告诉客户端发送错误的请求401Unauthorized与适当的标头一起返回,其中请求客户端在获得对资源的访问权之前对自身进行身份验证402PaymentRequired状态代码未使用403Forbidden用于指示该请求被服务器拒绝。如果服务器解释了请求被拒绝的原因,则可以包含实体的主体部分来描述它。但是这个状态码通常在服务器不想说明原因的情况下使用,404NotFound用来表示服务器找不到请求的URL。通常包含一个实体,以便客户端应用程序在向用户显示405MethodNotAllowed发送的请求具有请求的URL不支持的方法时,将使用此状态代码。因此,应在响应中包含Allow标头,以告知客户端哪些方法可用于请求的资源。406NotAcceptable客户端可以指定参数来表明它愿意接受什么类型的实体。当服务器没有与客户端接受的URL相匹配的资源时使用此代码。通常服务器会包含一些header,以便客户端搞清楚为什么请求不能被满足407ProxyAuthenticationRequired类似于401,但是用于需要对资源进行认证的代理服务器408RequestTimeout如果客户端请求时间过长,服务器可以返回此状态码并关闭连接。超时通常因服务器而异,但通常对于所有合法服务器来说都足够长。409Conflict用于表示请求可能导致了一些资源冲突。如果服务器担心引起冲突,它可能会发送此状态代码。响应应包含描述冲突的正文。410Gone与404类似,只是服务器曾经拥有该资源。主要用于网站的维护,以便服务器管理器在资源被移除时通知客户端。411LengthRequired当服务器要求请求报文中包含Content-length时,使用412PreconditionFalied客户端发送请求条件,其中一个条件不满足时使用。当客户端包含Expect头时,发送条件请求413RequestEntinyToolarge当客户端发送的实体主体部分大于服务器能够或想要处理时,使用此状态码414RequestUrlTooLong中的请求客户端发送的请求当URL长于服务器可以或想要处理的长度时,使用此状态代码415UnsupportedMediaType。当服务器无法理解或支持客户端发送的实体的内容类型时,使用这个状态码416RequestRangeNotSatisfiable。一个范围,而这个范围无效或者不能满足,使用这个状态码417ExpectionFailedrequestExpect请求包含一个期望,但是服务器不能满足这个期望,使用这个状态码。如果代理或其他中间程序有确凿证据表明源服务器会对请求产生失败预期,它可以发送这个状态码500-599:服务器错误状态码有时客户端发送请求,服务器本身有一个error当状态码原因短语意思是500InternalServerError当服务器遇到错误导致它无法为请求提供服务时,使用这个状态码501NotImplemented当客户端发送一个超出服务器能力的请求时,使用这个状态码502BadGateway作为代理或网关当服务器从响应链中的下一个链接接收到虚假响应时,状态码503ServiceUnavailable用于指示服务器现在无法为请求提供服务,但将来可以.如果服务器知道资源何时可用,它可以在响应中包含Retry-after标头。504GatewayTimeout类似于状态码408,只不过这里的响应是来自网关或代理,他们在等待另一台服务器响应他们的请求时超时了。505HTTPVersionNotSupported服务器收到的请求使用了它不能或不想支持的协议版本,使用这个状态码。某些服务器应用程序选择不支持该协议的早期版本。在github上编辑本页博主个人博客参考:http协议【http权威指南】