首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么响应304没有内容类型的标题?

为什么响应304没有内容类型的标题?
EN

Stack Overflow用户
提问于 2015-06-28 11:09:59
回答 1查看 2.6K关注 0票数 15

我一直在使用express.js,试图返回简单的json对象,并注意到尽管我显式地将Content-Type头设置为application/json,但只有当状态代码为200时,才能在第一个响应中看到。使用304的每个后续响应都不会有Content-Type头。

我的代码示例:

代码语言:javascript
运行
复制
app.get('/user', function (req, res) {
    res.set('Content-Type', 'application/json');

    res.send([
        { user: "john", email: "john@example.com"},
        { user: "marry", email: "marry@example.com"},
        { user: "dan", email: "dan@example.com"}
    ]);
});

原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-29 03:21:56

304 Not Modified意味着请求包含一个条件标头,要求服务器仅在资源被修改时才使用资源的内容进行响应。

由于不返回任何内容,因此不会发送Content-Type头。这是推荐行为,用于304 Not Modified HTTP应答。

来自RFC 7232§4.1

生成304响应的服务器必须生成任何 在200 (OK)中发送的标题字段如下 对同一请求的响应:Cache-ControlContent-LocationDate ETagExpiresVary。 由于304响应的目标是在接收方已经有一个或多个缓存表示时尽量减少信息传输,因此发送方不应生成除上述列出字段以外的表示元数据,除非所述元数据存在于 引导缓存更新(例如,如果 响应没有ETag字段)。

我对express.js一无所知,但我会研究一下正在执行何种类型的缓存。

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

https://stackoverflow.com/questions/31099113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档