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

TCP-IP基础知识总结学习(四)

时间:2023-04-04 23:59:31 HTML5

返回结果的HTTP状态码一、简介:概述:HTTP状态码负责表示客户端HTTP请求的返回结果,标记服务器端处理是否正常,以及出现错误等的通知有效。状态码组成:由3位数字和一个原因短语组成。数字的第一位数字指定响应类别,最后两位数字未分类。有以下五种响应类型。详细介绍几个常用的状态码:2. 2XXSuccess:2XX的响应结果表示请求已经正常处理。1.200OK表示客户端发出的请求在服务器端已经正常处理。在响应消息中,与状态代码一起返回的信息会因方法而异。例如,使用GET方法时,会返回请求资源对应的实体作为响应;而使用HEAD方法时,请求资源对应的实体头不会随消息体作为响应返回(即响应中只返回头,不会返回实体的主体部分).2.204NoContent该状态码表示服务器收到的请求已成功处理,但返回的响应消息中不包含实体的body部分。此外,不允许返回任何实体的主体。例如,当浏览器处理请求后返回204响应时,浏览器显示的页面将不会更新。一般用于客户端只需要向服务器发送信息,不需要向客户端发送新信息的情况。3.206PartialContent该状态码表示客户端进行了范围请求,服务器成功执行了这部分GET请求。响应消息包含Content-Range指定范围内的实体内容。3.3XX重定向:响应结果表明浏览器需要进行一些特殊处理才能正确处理请求。1.301MovedPermanently永久重定向。此状态代码表示已为请求的资源分配了一个新的URI,并且将来应该使用该资源现在引用的URI。也就是说,如果你已经将该资源对应的URI保存为书签,你应该根据Location头域提示的URI重新保存。像下面给出的请求URI,当忘记在指定资源路径末尾添加斜线“/”时,就会产生301状态码。如:http://example.com/sample2.302发现临时重定向。这个状态码表示请求的资源已经分配了一个新的URI,希望用户(此时)可以使用新的URI访问。类似于301MovedPermanently状态码,但是302状态码代表的资源不是永久移动的,只是暂时的。也就是说,被移动的资源对应的URI以后可能会发生变化。例如,用户将URI保存为书签,但并没有像出现301状态码时那样更新书签,而是保留了返回302状态码的页面对应的URI。3.303SeeOther该状态码表示由于请求对应的资源存在另一个URI,需要使用GET方法获取请求的资源。303状态码和302Found状态码功能相同,但是303状态码明确表示客户端应该使用GET方式获取资源,这与302状态码不同。比如用POST方法访问CGI程序,执行后的处理结果是希望客户端能用GET方法重定向到另一个URI,返回303状态码。虽然302Found状态码也可以实现同样的功能,但是这里还是使用303状态码比较理想。当返回301、302、303响应状态码时,几乎所有浏览器都会将POST改为GET并删除请求报文中的body,然后自动再次发送请求。301和302标准禁止将POST方法改为GET方法,但是大家在实际使用中都会这样做。4.304NotModified该状态码表示当客户端发送条件请求(注意)时,服务器允许请求访问资源,但条件不满足。当返回304状态码时,没有包含响应主体。304虽然属于3XX范畴,但与重定向无关。(注)条件请求是指使用GET方式的请求报文包含If-Match、If-ModifiedSince、If-None-Match、If-Range、If-Unmodified-Since中的任意一个header。5.307TemporaryRedirect临时重定向。此状态码与302Found含义相同。虽然302标准禁止POST到GET的转换,但是大家在实际使用中并不遵守。307将遵循浏览器标准,不会从POST变为GET。但是,每个浏览器在处理响应时的行为可能不同。4.4XXclienterror1.400BadRequest该状态码表示请求报文中存在语法错误。当出现错误时,需要修改请求内容,重新发送请求。此外,浏览器将此状态代码视为200OK。2.401Unauthorized该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外,如果之前有请求过,则表示用户认证失败。以401返回的响应必须包括适用于所请求资源的WWWAuthenticate标头以质询用户信息。当浏览器第一次收到401响应时,会弹出一个用于验证的对话窗口。3.403Forbidden该状态码表示对所请求资源的访问被服务器拒绝。服务器没有必要给出详细的拒绝原因,但如果要解释,可以在实体正文中描述原因,让用户看到。对文件系统的未授权访问、访问权限的一些问题(试图从未授权的源IP地址访问)等可能是403的原因。4.404NotFound该状态码表示在服务器上找不到请求的资源.另外,也可以用在服务器拒绝请求又不想解释原因的时候。5.5XXservererror:响应结果为5XX,表示服务器本身出现错误。1.500InternalServerError此状态码表示在执行请求时服务器端发生错误。它也可能是Web应用程序中的错误或临时故障。2.503ServiceUnavailable该状态码表示服务器暂时过载或停机维护,现在无法处理请求。如果事先知道解决上述情况需要的时间,最好写上RetryAfter头域返回给客户端。6.总结:状态码与状态不一致。许多返回的状态码响应是错误的,但用户可能没有意识到这一点。比如web应用内部出现错误,状态码仍然返回200OK,这是经常遇到的。