为什么Chrome开发工具显示200状态码而不是304

gupuwyp2  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(221)

当我用Chrome测试缓存处理中的一个奇怪行为时(我问了一些关于它的问题here),我发现了一些其他的东西:当服务器返回304响应时,Chrome开发工具显示了一个200状态代码。
在这里,您可以看到Chrome开发工具的内容(200),我还包含了一个显示服务器304响应的wireshark捕获。


的数据
下面是Firefox的相同用法,它显示了304代码:



更有趣的是两个浏览器之间的时间差异:

Firefox没有显示接收部分的延迟,但Chrome说它花了3.91毫秒。
你知道为什么Chrome不显示正确的状态代码吗?
如果你想测试自己,这里是服务器代码:

#!/usr/bin/env node

'use strict';

const express = require('express');
const cors = require('cors');
const compression = require('compression');
const pathUtils = require('path');
const fs = require('fs');

const http = require('http');
let app = express();
app.disable('x-powered-by');
app.use(express.json({ limit: '50mb' }));
app.use(cors());
app.use(compression({}));
app.use(function (req, res, next) {
    res.set('Cache-control', 'no-cache');
    console.log(req.headers);
    next();
});

let server = http.createServer(app);

app.get('/api/test', (req, res) => {
    res.status(200).send(fs.readFileSync(pathUtils.join(__dirname, 'dummy.txt')));
});

server.listen(1234);

字符串
和客户端:

<!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.0" />
        <title>Document</title>
    </head>
    <body>
        <script>
            let test = fetch('http://localhost:1234/api/test').then((res) => {
                console.log(res.status);
                return res.text();
            });
        </script>
    </body>
</html>

xlpyo6sf

xlpyo6sf1#

我认为这实际上是一个Chrome错误。一个错误报告已经在这里打开:https://bugs.chromium.org/p/chromium/issues/detail?id=1269602

afdcj2ne

afdcj2ne2#

设置max-age。例如:

max-age=2592000,no-cache

字符串

相关问题