Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是304没有修改的意思在控制台状态意味着什么?

什么是304没有修改的意思在控制台状态意味着什么?
EN

Stack Overflow用户
提问于 2015-10-11 18:47:50
回答 2查看 13.9K关注 0票数 4

我正在学习简单的聊天节点js。下面是我的示例代码:

server.js

代码语言:javascript
运行
AI代码解释
复制
var mongo = require('mongodb').MongoClient,
    client = require('socket.io').listen(8888).sockets;

index.html

代码语言:javascript
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Node Chat System</title>
        <link rel="stylesheet" type="text/css" href="css/main.css" />
    </head>
    <body>
        <div class="chat">
            <input type="text" class="chat-name" placeholder="Enter your name" />
            <div class="chat-messages"></div>
            <textarea placeholder="Enter your message" ></textarea>
            <div class="chat-status">Status: <span>Idle</span></div>
            <script src="http://127.0.0.1:8888/socket.io/socket.io.js"></script>
        </div>
    </body>
</html>

然后重新启动节点服务器,然后加载页面并检查控制台> net选项卡。

然后,我在访问socket.io时的状态是:

代码语言:javascript
运行
AI代码解释
复制
304 Not Modified

在我的教程中应该是

代码语言:javascript
运行
AI代码解释
复制
200 Ok

顺便说一下,我也在使用wampserver,当我停止所有进程时,效果仍然相同。

你能帮我做这个吗?

EN

回答 2

Stack Overflow用户

发布于 2015-10-11 20:24:58

在您的具体情况下,node.js服务器只是告诉浏览器它缓存的socket.io.js版本没有过时,所以只需使用它在缓存中已经拥有的版本。这是可缓存文件的正常预期浏览器行为。如果清除浏览器缓存,重新启动浏览器,然后重复此测试,在第一次加载文件时,应该会看到200状态(由于缓存为空,浏览器将不会发出条件GET请求)。在此之后,一旦文件被缓存,您应该再次获得304。

304返回状态的描述就在规范中(也是Google搜索的第一个结果):

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5

10.3.5 304未修改 如果客户端执行了条件GET请求,并且允许访问,但文档没有被修改,服务器应该使用此状态代码进行响应。304响应不能包含消息体,因此始终由标题字段之后的第一个空行终止。 响应必须包括以下头字段:

  • 日期,但如第14.18.1条规定略去日期,则属例外 如果无时钟的原始服务器遵守这些规则,并且代理和客户端将自己的日期添加到没有响应的任何响应(如RFC 2068,第14.19节已经指定的那样),则缓存将正确操作。
  • ETag和/或内容-位置,如果报头在对同一请求的200个响应中发送,则缓存控制和/或更改,如果字段值可能与以前为同一变量发送的任何响应中的值不同的话。 如果条件GET使用了强缓存验证器(参见13.3.3节),则响应不应包括其他实体头。否则(即条件GET使用弱验证器),响应不能包含其他实体-标头;这将防止缓存的实体-主体和更新的标头之间的不一致。 如果304响应指示当前未缓存的实体,则缓存必须忽略响应并在没有条件的情况下重复请求。 如果缓存使用接收到的304响应来更新缓存条目,则缓存必须更新条目以反映在响应中给定的任何新字段值。

因此,简单地说,它意味着如果客户端执行了条件GET请求,那么服务器可以返回304,这意味着内容自上次被请求以来没有被修改过,这是一种服务器将内容发送回客户机而不必再次发送内容的方式。基本上,客户端说:“我想知道您是否有新版本的内容,这是我已经拥有的版本的元数据。如果您没有比我现有的版本更新的版本,那么只需返回304,否则就发送给我更新的版本”。

而且,如果您想要对“有条件的GET请求”进行更多的解释,您可以在这里阅读:https://ruturajv.wordpress.com/2005/12/27/conditional-get-request/

更详细的

如果清除浏览器缓存,然后获取socket.io.js,您将看到200个响应状态和一个响应头,如下所示:

代码语言:javascript
运行
AI代码解释
复制
 ETag: xxxxx

然后,当浏览器下一次请求同一个文件时,它将在请求中发送带有此头的条件GET请求:

代码语言:javascript
运行
AI代码解释
复制
If-None-Match: xxxxx

其中xxxxx在两个字符串中都是相同的字符串。

这是浏览器告诉服务器,它已经有了一个带有给定ETag的文件版本。然后,服务器检查文件的版本是否为ETag。如果ETag匹配,则返回304。在本例中,ETag用作版本号。在某些情况下,它是文件的散列,但在socket.io.js的特定情况下,它实际上是一个版本号(因为服务器代码密切了解该特定文件)。

票数 7
EN

Stack Overflow用户

发布于 2018-03-06 11:01:52

我有类似的问题,我做了jfriend00的建议,但这没有帮助。

我发现了以下内容--这不是为Jerielle设计的--我希望它能帮助到别人。

为了避免这个问题,只需打开以下链接(它是可选的-参见下面最后一段):

http://localhost:3000/socket.io/socket.io.js

(请将3000换成您正在使用的)。

这将缓存socket.io.js

在那之后,打开你需要打开的页面,第一次你应该得到200。不要再次刷新页面-- socket.io按预期的方式工作--按它应该的方式与服务器通信(至少在我的例子中是这样)。

如果您再次单击refresh,它将返回304 --它可能与this有关--我猜,在此过程中使用‘If -修改’,因此刷新返回304‘未修改’。

这意味着在大多数情况下,socket.io应该能够成功地与服务器通信,即使您获得304 (即使您没有单击上面的链接来缓存socket.io.js)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33072519

复制
相关文章
在美国,手机没有谷歌play意味着什么?
谷歌的影响力不仅仅体现在全球范围内,在美国也是霸主般的存在,谷歌曾经连续几年被评为最具有创新价值的科技公司,证明了谷歌公司在美国依然有着举足轻重的影响力,谷歌背靠雅虎慢慢的一点点做大,已经是全球绝对意义上的搜索引擎霸主,在国内最大的搜索霸主是百度公司,在全球市场份额整体算下来少的可怜,主要原因是国际化道路并没有拓展开,现在国内市场的位置也慢慢变得不牢固了,字节跳动和腾讯以及阿里巴巴都有自己的搜索体系,而且百度公司的人工智能目前更多是在理论化阶段,距离真正意义上形成产业化还是有一定的距离。
程序员互动联盟
2020/05/14
1.1K0
在美国,手机没有谷歌play意味着什么?
HasStatic是什么意思java_java – getstatic在字节码中真正意味着什么?
// Stack is [initializedAsTypeObjectObjectRef]
全栈程序员站长
2022/09/27
9050
DeFi中的De是什么意思?这对区块链行业意味着什么?
作者 | Oscar W 翻译 | 火火酱,责编 | Carol 出品 | 区块链大本营(ID:blockchain_camp) 区块链这一概念最早是由Stuart Haber和Scott Stornetta在1991年提出的。直到2008年,中本聪(Nakamoto Satoshi)将第一个区块链概念化,并创造了比特币。从那时起,无数的项目涌现出来,希望能够彻底改变区块链领域。 然而,直到2015年,一位名为 Vitalik Buterin(V 神)的天才创造了以太坊,才迈出了改变的关键性一步。以太坊
区块链大本营
2023/03/31
6620
DeFi中的De是什么意思?这对区块链行业意味着什么?
什么是TCC?_tc部门是什么意思
假设现在有一个电商系统,里面有一个支付订单的场景,那对一个订单支付之后,我们需要做下面的步骤
全栈程序员站长
2022/08/03
8070
什么是TCC?_tc部门是什么意思
spring是什么意思_什么spring是孩子
Java思想是面向对象的开发,一个应用程序是由一组对象通过相互协作开发出的业务逻辑组成,那么如何管理这些对象,使他们高效地协作呢?抽象工厂、工厂方法设计模式”可以帮我们创建对象,“生成器模式”帮我们处理对象间的依赖关系,不也能完成这些功能吗?可是这些又需要我们创建另一些工厂类、生成器类,我们又要而外管理这些类,增加了我们的负担。所以用另外的方式,如果对象需要的时候,就自动地生成对象,不用再去创建。举个例子:原来我们饿了,就出去吃饭,但是现在有了外卖之后,就可以订餐了,我们可以把我们的需求告诉美团,让他们给我们送饭。这里主导关系发生了变化,原来是我们自己,但是现在是美团。
全栈程序员站长
2022/11/15
3990
a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?
1、在JAVA程序中由String和“+”参与的运算变量都会被转为字符类型,可以理解为先把32313133353236313431303231363533e4b893e5b19e31333335313237变量转为字符型然后在进行字符拼接。
全栈程序员站长
2022/09/08
18.1K0
a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?
为什么 Java 线程没有 Running 状态?
Java虚拟机层面所暴露给我们的状态,与操作系统底层的线程状态是两个不同层面的事。具体而言,这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态:
Java技术栈
2019/10/14
1.2K0
为什么 Java 线程没有 Running 状态?
修改权限644是什么意思
644的意思是本用户有可读可写权限,群组有只读权限,其他用户为只读权限。 解释: 数字的三位分别代表:当前用户,群组用户,其他用户。 然后权限可以分为:读r=4,写w=2,执行x=1 所以:644为(4+2)(4)(4),即〔当前用户〕读,写权限,〔群组用户〕读权限,〔其它〕读权限。
全栈程序员站长
2022/09/07
1.5K0
什么是Docker的编排?它到底意味着什么?为什么我们需要它?
[本文由Yaron Parasol编写]
Zach展
2018/01/15
2.1K0
什么是Docker的编排?它到底意味着什么?为什么我们需要它?
1秒,在不同的世界里意味着什么?
雷锋网授权转载 网站: http://www.leiphone.com/ 微信: leiphone-sz 国际地球自转服务组织(IERS)近期宣布,将在今年6月30日增加闰秒。常听说过闰月和闰年的,应该很少听说过闰秒。 闰秒是什么? 科学上有两种时间计量系统:基于地球自转的天文测量而得出的“世界时”和以原子振荡周期确定的“原子时”。“世界时”由于地球自转的不稳定(由地球物质分布不均匀和其它星球的摄动力等引起的)会带来时间的差异,“原子时”(一种较恒定的时制,由原子钟得出)则是相对恒定不变的。这两种时间尺度速
大数据文摘
2018/05/23
7600
pcep协议什么意思_什么是SDN「建议收藏」
传统网络设备部署模式来说,基于整个网络状态的决策都要由每台网络设备独立承担,如果执行控制平面功能的模块的处理能力达到了设备极限,即便数据平面带宽仍有富余,也可能会出现瓶颈。
全栈程序员站长
2022/10/04
6030
void loop在c语言中什么意思,C语言中的loop是什么意思,在C语言中loop是什么意思?…[通俗易懂]
另附上goto,break, continue和return用法:=========================================== 程序中的语句通常总是按顺序方向, 或按语句功能所定义的方向执行的。
全栈程序员站长
2022/08/30
2.7K0
在没有 'try-with-resources' 语句的情况下使用 'xxx' 是什么意思
在没有使用 try-with-resources 语句的情况下使用 xxx,意味着在代码中没有显式地关闭 xxx对象资源,如果没有使用 try-with-resources,那么在使用xxx对象后,需要手动调用 close() 方法关闭xxx对象以释放资源,防止资源泄露。
高久峰
2023/09/30
4.6K0
“//”在python中是什么意思?
要在 Python 中进行楼层划分,请使用双斜杠 // 运算符。此 // 运算符将第一个数字除以第二个数字,并将结果舍入到最接近的整数(或整数)。
很酷的站长
2023/02/21
5.6K0
“//”在python中是什么意思?
网站流量UV是什么意思?什么是流量UV/PV/IP
PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客): 即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。
Java架构师必看
2021/03/22
5.3K0
777 意味着什么?
本文最先发布在: https://www.itcoder.tech/posts/what-does-chmod-777-mean/
雪梦科技
2020/05/25
1.9K0
777 意味着什么?
状态码304的简单介绍[通俗易懂]
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过。两个时间戳的格式如下:
全栈程序员站长
2022/07/25
4.7K0
状态码304的简单介绍[通俗易懂]
堡垒机是什么意思?什么是堡垒机的作用原理?
随着现代社会中互联网技术的不断发展,越来越多的行业中都需要用到计算机以及各种网络,公司或者企业内部的一些私密数据也会保存在计算机内部,不过也是由于计算机的使用广泛也带了很多安全方面的问题,每年都会有公司机密泄露出去的例子,如果是普通的信息还好,如果是一些公司名下的未来规划等信息就会造成巨大的损失,所以现在很多大型公司都会选择使用堡垒机来保证特定网络情况下的信息安全,那么堡垒机是什么意思?什么是堡垒机的作用原理?
用户8715145
2021/10/12
1.7K0
Backbone 在神经网络中意味着什么?
神经网络是机器学习算法,我们可以将其用于许多应用,例如图像分类、对象识别、预测复杂模式、处理语言等等。神经网络的主要组成部分是层和节点。
数据科学工厂
2023/08/10
1.3K0
Backbone 在神经网络中意味着什么?
点击加载更多

相似问题

什么是“没有修改,但从这里复制创建”的意思?

11

意味着什么.意思是什么?

172

什么是意思::什么时候没有前缀?

13

为什么mapboxgl返回304状态代码?

12

什么是$?意思是在壳里?

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档