首页 > 其他分享 >【转载】 HTTP中的响应协议及302、304的含义

【转载】 HTTP中的响应协议及302、304的含义

时间:2023-01-31 17:26:02浏览次数:62  
标签:index HTTP 请求 302 304 响应 html 服务器 浏览器

原文地址:

https://www.cnblogs.com/chenyablog/p/9197305.html

 

 

==============================

 

 

响应协议

HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
Server: Apache-Coyote/1.1:服务器的版本信息;
Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8;
Content-Length: 724:响应体为724字节;
Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:响应给客户端的Cookie;
Date: Wed, 25 Sep 2012 04:15:03 GMT:响应的时间,这可能会有8小时的时区差;

 

响应码  

响应头对浏览器来说很重要,它说明了响应的真正含义。例如200表示响应成功了,302表示重定向,这说明浏览器需要再发一个新的请求。
 
200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
 
404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
 
500:请求资源找到了,但服务器内部出现了错误;
 
302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
 
304:当用户第一次请求index.html时,服务器会添加一个名为Last-Modified响应头,这个头说明了index.html的最后修改时间,
浏览器会把index.html内容,以及最后响应时间缓存下来。当用户第二次请求index.html时,在请求中包含一个名为If-Modified-Since请求头,
它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值,即index.html最后的修改时间,
If-Modified-Since请求头就是在告诉服务器,我这里浏览器缓存的index.html最后修改时间是这个,
您看看现在的index.html最后修改时间是不是这个,如果还是,那么您就不用再响应这个index.html内容了,
我会把缓存的内容直接显示出来。而服务器端会获取If-Modified-Since值,与index.html的当前最后修改时间比对,
如果相同,服务器会发响应码304,表示index.html与浏览器上次缓存的相同,无需再次发送(节省传输成本),
浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html已经做了修改,服务器会响应200。

 

响应头

Last-Modified:最后的修改时间;

 

请求头

If-Modified-Since:把上次请求的index.html的最后修改时间还给服务器;

 

状态码:304,比较If-Modified-Since的时间与文件真实的时间一样时,服务器会响应304,而且不会有响正文,表示浏览器缓存的就是最新版本!如果不一样,那么服务器响应200

 

 

 

其他响应头

告诉浏览器不要缓存的响应头:
 
Expires: -1;有效期,表示立即过期
 
Cache-Control: no-cache;
 
Pragma: no-cache;

 

小结:

302重定向(两次请求) 。

304,浏览器缓存的上次请求的.html页面,包括最后修改时间(如果发现最后修改时间和服务器里面的时间一样,那么响应304,无需传输数据,浏览器接收到304,则去自己的缓存中取出数据,节省传输成本)

 

 

=================================

 

 

PS:

个人理解,如果第一次浏览器访问某页面,返回的响应头带Last-Modified,那么当浏览器会将页面内容进行缓存并在第二次访问这个页面时在请求头中加入If-Modified-Since字段其内容为上次获得的Last-Modified时间信息,如果时间信息变化说明服务器对应文件更新此时服务器返回更新后的内容并带200相应码;如果时间信息一致说明服务器对应文件没有变化此时服务器返回带304相应码的空内容,浏览器接收都信息后会将缓存中的对应页面用来显示。

 

 

=================================

 

 

 

标签:index,HTTP,请求,302,304,响应,html,服务器,浏览器
From: https://www.cnblogs.com/devilmaycry812839668/p/17079869.html

相关文章

  • HTTP笔记2--HTTP工作协议及原理
     TCP/IPTCP/IP我们一般称之为协议簇,就是TCP/IP协议簇中不仅仅只有TCP协议和IP协议,它是一系列网络通信协议的统称。而其中最核心的两个协议就是TCP/IP协议,其他......
  • 关于C# HttpClient 的用法及相关问题的解决方法
    关于C#HttpClient的用法及相关问题的解决方法​​1、遇到的问题​​​​①远程主机强迫关闭了一个现有的连接​​​​②POST请求某种情况下请求会失败的解决方案​​​......
  • http 长连接与短连接
    短连接:在http1.0的版本,用户端与服务端在简历tcp连接通道,发送一次信息后,通道关闭。长连接:在http1.1的版本,用户端与服务端在简历tcp连接通道,发送一次信息后,通道不会默认关系......
  • Linux如何通过Apache httpd部署MantisBT
    一、Apachehttpd1.安装Apachehttpdyuminstallhttpd-y#安装httpdsystemctlstarthttpd#启动httpdsystemctlenablehttpd#配置自启动2.修改Apache服......
  • HttpResponse 和 JsonResponse 的直观区别以及 response.json()方法
    HttpResponse对象Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回......
  • 用 ipv6 和端口号发起 http 请求
    概述全球的ipv4即将分配殆尽,公司已经开始改造和推行ipv6了,本来以为跟我没啥关系,但是发现今天使用${ip}:${port}来发起请求时,把原来服务器的ipv4替换成ipv6,提示没......
  • 0146-Go-HTTP 客户端
    环境Time2022-08-25Go1.19前言说明参考:https://gobyexample.com/http-clients目标使用Go语言的HTTP客户端。示例packagemainimport("bufio"......
  • 0147-Go-HTTP 服务端
    环境Time2022-08-25Go1.19前言说明参考:https://gobyexample.com/http-servers目标使用Go语言HTTP服务端。示例packagemainimport("fmt""ne......
  • Simple-Web-Server HTTP开源服务器库
    1下载网址​ ​​https://gitlab.com/eidheim/Simple-Web-Server​​2实现HTTP短连接默认的HTTP协议都是短连接,服务器返回响应报文,就会主动断开,测试发现,当前库不会主动断......
  • 报错HTTP 405 Method Not Allowed, Allow: POST, OPTIONS, "detail": "方法 “GET” 不
    当测试注册功能是否实现时,出现了这种情况的405:HTTP405MethodNotAllowedAllow:POST,OPTIONSContent-Type:application/jsonVary:Accept{"detail":"方法“GET......