【问题标题】:In Node.js/Express, how do I disable browser cache for a redirect?在 Node.js/Express 中,如何禁用浏览器缓存以进行重定向?
【发布时间】:2013-05-17 08:01:41
【问题描述】:
app.get('/my_profile_picture', function(req,res){
    getPicture(req.user.id, function(url){
        res.redirect(url);  
    });
});

这是我的代码。但是,当用户更改他的个人资料图片时,浏览器仍会转到旧图片的 URL。这是因为浏览器缓存了“重定向”或其他东西。

如何更改 Express 中的响应,以便完全没有缓存?

【问题讨论】:

标签: node.js http caching express


【解决方案1】:

尝试将重定向设置为 307 重定向 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8),因为默认情况下不应缓存它们。

app.get('/my_profile_picture.jpg', function(req,res){
    getPicture(req.user.id, function(url){
        res.statusCode = 307;
        res.redirect(url);
    });
});

【讨论】:

  • 根据 HTTP 规范,不应该需要 307 来避免缓存。 Express 默认情况下对res.redirect 执行 302,并且 302 响应“只有在 Cache-Control 或 Expires 标头字段指示时才可缓存”。但是,Chrome 有 a bug 导致重定向被缓存。根据评论者的说法,这也适用于 307 重定向。所以要小心。
  • @MerynStol 我很惊讶错误 still 还没有修复!已经一年半了!
猜你喜欢
  • 2010-12-28
  • 2012-12-13
  • 2011-12-29
  • 1970-01-01
  • 2014-07-31
  • 2014-09-28
  • 1970-01-01
  • 2016-01-17
  • 2017-03-09
相关资源
最近更新 更多