当前位置: 首页 > Web前端 > HTML5

HTTP学习-踩坑_06

时间:2023-04-05 15:37:59 HTML5

HTTP学习HTTP简介HTTP协议是超文本传输??协议(HyperTextTransferProtocol)的缩写,用于将超文本从万维网(WWW:WorldWideWeb)服务器传输到本地浏览服务器的传输协议。.HTTP是一种基于TCP/IP传输数据(HTML文件、图片文件、查询结果等)的通信协议。HTTP服务器即WEB服务器发送所有的请求,Web服务器包括:Apache服务器、IIS服务器(InternetInformationServices)等,Web服务器根据收到的请求向客户端发送响应信息,默认HTTP端口号为80,但也可以换成8080或其他端口。HTTP中需要注意的三点:HTTP是无连接的:无连接的意思是限制每个连接只能处理一个请求。服务器处理完客户端的请求后,收到客户端的响应,它断开连接。使用这种方法可以节省传输时间。HTTP是媒体无关的:这意味着,只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用合适的MIME-type内容类型。HTTP是无状态的:HTTP协议是无状态协议。无状态意味着该协议没有用于事务处理的内存。状态的缺失意味着如果后续处理需要之前的信息,必须重传,所以可能会导致每次连接传输的数据量增加。另一方面,当服务器不需要以前的信息时,它的响应速度更快。HTTP请求方法HTTP/1.1协议定义了8种HTTP请求方法,HTTP请求方法也称为“请求动作”。不同的方法指定不同操作指定的资源方法。服务器也会根据不同的请求方式做出不同的响应。GET请求将显示请求指定的资源。一般来说,GET方法应该只用于读取数据,不应该用于会产生副作用的非幂等操作。GET方法请求指定的页面信息并返回响应体。GET被认为是一种不安全的方法,因为GET方法会像GET方法一样,HEAD方法向服务器发送对指定资源的请求。但是服务器在响应HEAD请求时不会返回资源的内容部分,即:响应体。这样,我们就可以在不传输全部内容的情况下,获取服务器的响应头信息。客户端经常使用HEAD方法来查看服务器性能。POSTPOST请求会将数据提交到指定资源并请求服务器进行处理,例如:表单数据提交、文件上传等,请求数据会包含在请求体中。POST方法是非幂等的,因为请求可能会创建新资源或/和修改现有资源。PUTPUT请求会将自己最新的内容上传到指定的资源位置,PUT方法是幂等方法。通过该方法,客户端可以将指定资源的最新数据发送给服务端,替换指定资源的内容。DELETEDDELETE请求用于请求服务器删除由请求的URI(统一资源标识符)标识的资源。DELETE请求后会删除指定的资源,DELETE方法也是幂等的。CONNECTCONNECT方法是HTTP/1.1协议保留的,可以以管道方式改变到代理服务器的连接。通常用于SSL加密的服务器链接和非加密的HTTP代理服务器之间的通信。OPTIONSOPTIONS请求类似于HEAD,一般用于客户端检查服务器性能。该方法会请求服务器返回该资源支持的所有HTTP请求方法。该方法会将资源名替换为'*',并向服务器发送OPTIONS请求,测试服务器功能是否正常。JavaScriptXMLHttpRequest对象在进行CORS跨域资源共享时,会通过OPTIONS方法发送嗅探请求,判断是否有对指定资源的访问权限。允许TRACETRACE请求服务器回显它收到的请求信息。该方法主要用于测试或诊断HTTP请求。HTTP/1.1之后增加的方法HTTP/1.1标准制定后,陆续扩展了一些方法。其中PATCH方法用的比较多:PATCHPATCH方法出现的比较晚,2010年定义在RFC5789标准中。PATCH请求和PUT请求类似,也是用来更新资源的。两者有两个区别:PATCH一般用于资源的局部更新,而PUT一般用于资源的整体更新。当资源不存在时,PATCH会创建一个新的资源,而PUT只会更新已有的资源。HTTP状态码:Category类别描述1**信息中,服务器收到请求,请求者需要继续执行操作2**Success,操作成功接收并处理3**重定向,进一步操作是requiredtocompletetherequest4**Clienterror,requestcontainsasyntaxerrororcannotcompletetherequest5**Servererror,服务器在处理请求时遇到错误1XX状态码状态码英文名称中文描述100Continue。客户端应继续其请求101SwitchingProtocols交换协议。服务器根据客户端的请求切换协议。只能切换到更高层的协议,比如切换到新版本的HTTP协议2XX状态码状态码英文名中文描述200OK请求成功。一般用于GET和POST请求201Created已经创建。成功请求并创建新资源202Accepted已接受。已接受请求,但未处理203Non-AuthoritativeInformation。请求成功。但是返回的元信息不在原来的服务器上,而是一份没有内容的204NoContent。服务器处理成功,但没有返回任何内容。在网页没有更新的情况下,可以保证浏览器继续显示当前文档205ResetContent重置内容。服务器处理成功,用户端(如:浏览器)应重新设置文档视图。该返回码可用于清除浏览器的部分表单域206PartialContent。服务器成功处理了一些GET请求。3XXStatusCode状态码英文名称中文描述300MultipleChoicesMultipleChoices.请求的资源可以包括多个位置,可以相应地返回一个资源特征和地址列表,供用户终端(例如:浏览器)选择301MovedPermanently。请求的资源已经永久移动到新的URI,返回的信息会包含新的URI,浏览器会自动定向到新的URI。将来的任何新请求都应该使用新的URI而不是302FoundTemporaryMove。类似于301。但是资源只是临时移动的。客户端应该继续使用原来的URI303SeeOther来查看其他地址。类似于301。参见304NotModified未修改GET和POST请求。请求的资源没有被修改。服务器返回此状态码时,不会返回任何资源。客户端通常通过提供一个标头来缓存访问的资源,该标头指示客户端希望仅返回在指定日期之后修改的资源。305UseProxy使用代理。请求的资源必须通过代理访问。306Unused已被过时的HTTP状态代码307TemporaryRedirect临时重定向。类似302,使用GET请求重定向4XX状态码状态码英文名称中文描述400BadRequest客户端请求语法错误,服务端无法理解401Unauthorized请求需要用户认证402PaymentRequired保留,以后使用403Forbidden服务端理解来自客户端的请求,但拒绝执行Thisrequest404NotFound服务器无法根据客户端的请求找到资源(网页)。通过这段代码,网站设计者可以设置“找不到你请求的资源”的个性页面405MethodNotAllowed客户端请求中的方法被禁止406NotAcceptable服务器无法根据客户端请求的内容特征完成请求407ProxyAuthenticationRequiredRequestrequirements代理的身份认证类似于401,但是请求者应该使用代理进行授权。408RequestTime-out服务器等待客户端发送的请求时间过长,超时409Conflict服务器可能在完成客户端的PUT请求后返回此代码。服务器处理请求时发生冲突410Gone客户端请求的资源已经不存在。410与404不同,如果资源之前被永久删除过,可以使用410代码。网站设计者可以通过301代码指定资源的新位置。411LengthRequired没有Content-Length,服务器无法处理客户端发送的请求信息412PreconditionFailed客户端请求信息的先决条件错误413RequestEntityTooLarge因为请求的实体太大,服务器无法处理,所以请求被拒绝.为了防止来自客户端的连续请求,服务器可能会关闭连接。如果服务器暂时不能处理,会包含一个Retry-After响应信息414Request-URITooLargeTherequestedURIistoolong(URIusuallyaURL),theservercannothandle415UnsupportedMediaTypeTheservercannothandlethemediaformatattachedtotherequest416Requestedrangenotsatisfaction客户端请求的范围无效417ExpectationFailed服务器不能满足Expect的请求头信息5XX状态码Statuscode英文名称中文描述500InternalServerError内部服务器错误,无法完成请求501NotImplementedTheserverdoesnotsupporttherequestedfunction,unabletocompletetherequest502BadGateway作为网关或代理的服务器试图执行请求时,收到远程服务器的无效响应503ServiceUnavailable。由于超载或系统维护,服务器暂时无法处理客户端的请求。延迟的长度可以包含在服务器的Retry-After头信息中。504GatewayTime-out作为网关或代理的服务器没有及时获取远程服务器的请求。505HTTPVersionnotsupported服务器不支持请求的HTTP协议版本,无法完成处理