http状态码301、302及304

http状态码分类:
1**:服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步的操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成请求
5**:服务器错误,服务器在处理请求的过程中发生了错误

状态码301:永久性转移
状态码302:临时性转移
301和302都代表重定向,浏览器拿到这个状态码后会自动跳转到新的url地址
抓取一个302临时重定向,新的url地址可以从响应标头的Location字段获取,在地址栏可以看到输入的A地址变为B地址。
不同点为301表示旧地址A的资源已经被永久移除了,302表示旧地址A的资源还存在。


状态码304:当浏览器请求未改变且已缓存的资源时,服务器会返回304状态码;告知浏览器,该资源从某个时间段之后没有改变,可以用在浏览器端缓存的资源
强缓存与协商缓存
1、强制缓存:
服务器通知浏览器一个缓存时间,在缓存时间内,下次请求直接使用缓存中的资源

Expires(http1.0的产物)

1、是一个绝对时间,是缓存过期时间
2、用以表达在这个时间点之前发起请求可以直接从浏览器中读取数据,而无需重新发起请求
3、用户可能将本读时间进行修改,从而导致浏览器判断缓存失效,重新请求资源

Cache-Control(http1.1的产物)

1、以时间间隔标识失效时间,解决了Expires服务器和客户端相对时间的问题
2、比Expires多了很多选项设置,如max-age、public等

Disk Cache 存储在硬盘中的缓存
Memory Cache 内存中的缓存

设置请求缓存:

<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2013 23:00:00 GMT" />
1
2
2、协商缓存:
协商缓存每次读取数据都要和服务器通信,相关头信息为:Last-Modified/If-Modified-Since、ETag/If-None-Match,这两组头信息成对出现,前面为响应标头,后面为请求标头,通信后由服务器校验,返回304状态码时,浏览器直接使用缓存
Last-Modified/If-Modified-Since是http1.0的产物,表示服务器资源最后一次修改的时间(GMT格式)
ETag/If-None-Match是http1.1的产物,是服务器资源的唯一标识,服务器资源有变化则重新生成该标识

Last-Modified/If-Modified-Since

1、服务器通过Last-Modified告知浏览器资源最后一次修改时间,如下图,响应标头里有Last-Modified字段,浏览器将这个字段及其内容存入缓存数据库种
2、下一次请求该资源时,如刷新页面操作,浏览器会找出这个值写入请求头If-Modified-Since字段中
3、服务器收到这个值If-Modified-Since后与Last-Modified对比,如果相等,表示未修改,则响应304状态码,反之则表示修改了,响应200状态码并返回数据
该方式存在一定缺陷:如果是周期性重写,实际内容没有改变也会被记录改变

ETag/If-None-Match

1、服务器返回ETag,作为资源是否有变化的标识
2、浏览器在下一次发起请求时,会将上一次的ETag值赋给If-None-Match并放在请求标头中,服务器用这个值和上一次的值匹配,如果一致则返回304,浏览器相应读取本地缓存,否则返回200及新的资源


                        
原文链接:https://blog.csdn.net/weixin_42254016/article/details/129322203

参考文章:常见的http状态码出现原因200、301、302、403、404、500、503_状态码200 301 304 404 505-CSDN博客

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP服务器状态代码定义 在利用LoadRunner进行性能测试的时候,经常不知道某个HTTP代码的涵义,现在转载一 篇文章,详细介绍了每种类型的HTTP返回码解释,仅供参考。 HTTP服务器状态代码定义(Status Code Definitions) 1.1 消息1xx(Informational 1xx) 该类状态代码用于表示临时回应。临时回应由状态行(Status- Line)及可选标题组成, 由空行终止。HTTP/1.0中没有定义任何1xx的状态代码,所以它们不是对HTTP/1.0请求的   合法回应。实际上,它们主要用于实验用途,这已经超出本文档的范围。 1.2 成功2xx(Successful 2xx) 表示客户端请求被成功接收、理解、接受。 200 OK 请求成功。回应的信息依赖于请求所使用的方法,如下: GET 要请求的资源已经放在回应的实体中了。 HEAD 没有实体主体,回应中只包括标题信息。 POST 实体(描述或包含操作的结果)。 201 Created 请求完成,结果是创建了新资源。新创建资源的URI可在回应的实体中得到。原始服务器 应在发出该状态代码前创建该资源。如果该操作不能立即完成,服务器必须在该资源可 用时在回应主体中给出提示,否则,服务器端应回应202(可被接受)。 在本文定义的方法,只有POST可以创建资源。 202 Accepted 请求被接受,但处理尚未完成。请求可能不一定会最终完成,有可能被处理过程随时中 断,在这种情况下,没有办法在异步操作中重新发送状态代码。 202回应是没有义务的,这样做的目的是允许服务器不必等到用户代理和服务器间的连接 结束,就可以响应其它过程的请求(象每天运行一次的,基于批处理的过程)。 在某些回应中返回的实体中包括当前请求的状态指示、状态监视器指针或用户对请求能 否实现的评估信息。 204 No Content 服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户代理,则勿需为此 更新自身的文档视图。该回应主要是为了在不影响用户代理激活文档视图的前提下,进 行script语句的输入及其它操作。该回应还可能包括新的、以实体标题形式表示的元信 息,它可被当前用户代理激活视图中的文档所使用。 1.3 重定向(Redirection 3xx) 该类状态码表示用户代理要想完成请求,还需要发出进一步的操作。这些操作只有当后 跟的请求是GET或HEAD时,才可由用户代理来实现,而不用与用户进行交互。用户代理永 远也不要对请求进行5次以上的重定向操作,这样可能导致无限循环。 300 Multiple Choices 该状态码不被HTTP/1.0的应用程序直接使用,只是做为3xx类型回应的缺省解释。存在多 个可用的被请求资源。 除非是HEAD请求,否则回应的实体中必须包括这些资源的字符列表及位置信息,由用户 或用户代理来决定哪个是最适合的。 如果服务器有首选,它应将对应的URL信息存放在位置域(Location field)处,用户代理会根据此域的值来实现自动的重定向。 301 Moved Permanently 请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源。有 编辑链接功能的客户端会尽可能地根据服务器端传回的新链接而自动更新请求URI。 新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体   (Entity-Body)必须包括对新URL超链接的简要描述。 如果用POST方法发出请求,而接收到301回应状态码。在这种情况下,除非用户确认,否 则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。 注意:当在接收到301状态码后而自动重定向POST请求时,一些现存的用户代理会错误地 将其改为GET请求。 302 Moved Temporarily 请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端应继续用 请求URI来发出以后的请求。新的URL必须由回应中的位置域指定。除非是HEAD请求,否 则回应的实体主体 (Entity-Body)必须包括对新URL超链接的简要描述。 如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户确认,否 则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。 注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理会错误地 将其改为GET请求。 304 Not Modified 如果客户端成功执行了条件GET请求,而对应文件自If-Modified- Since域所指定的日期以来就没有更新过,服务器应当回应此状态码,而不是将实体主体 发送给客户端。回应标题域中只应包括一些相关信息,比如缓存管理器
HTTP状态码是服务器返回给客户端的三位数字代码,用于表示服务器对请求的处理结果。状态码由五个类别,分别以不同的数字开头,分别是1xx(信息性状态码)、2xx(成功状态码)、3xx(重定向状态码)、4xx(客户端错误状态码)和5xx(服务器错误状态码)。以下是常见的HTTP状态码及其含义: 1. 1xx(信息性状态码):表示服务器已接收到请求,正在处理,并将继续发送信息给客户端。 - 100(Continue):客户端可以继续发送请求。 - 101(Switching Protocols):服务器已经理解客户端的请求,并将切换到另一个协议来完成这个请求。 2. 2xx(成功状态码):表示服务器已成功处理请求并返回响应。 - 200(OK):表示请求已成功处理。 - 201(Created):表示请求已经被成功处理,并创建了一个新的资源。 - 204(No Content):表示请求已经被成功处理,但没有任何内容需要返回。 3. 3xx(重定向状态码):表示客户端需要进行附加操作才能完成请求。 - 301(Moved Permanently):请求的资源已永久移动到新的位置。 - 302(Found):请求的资源已临时移动到新的位置。 - 304(Not Modified):客户端可以通过本地缓存直接使用先前访问的结果。 4. 4xx(客户端错误状态码):表示客户端发送的请求有错误。 - 400(Bad Request):请求错误,服务器未能理解请求。 - 403(Forbidden):服务器拒绝该请求。 - 404(Not Found):服务器无法找到请求的资源。 5. 5xx(服务器错误状态码):表示服务器处理请求时发生错误。 - 500(Internal Server Error):服务器内部错误,无法完成请求。 - 503(Service Unavailable):服务器暂时无法处理请求。 以上是常见的HTTP状态码及其含义,了解它们对于Web开发和调试非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值