首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome没有发送if-none-match

Chrome没有发送if-none-match
EN

Stack Overflow用户
提问于 2014-03-30 00:51:47
回答 4查看 11.7K关注 0票数 24

我正在尝试请求我的REST API,火狐没有问题,但在Chrome中我无法让浏览器工作,总是抛出200 OK,因为没有if-none-match (或类似的)头被发送到服务器。

有了火狐,我得到了完美的304

我想我遗漏了一些东西,我试着用Cache-Control: max-age=10测试,但是什么都没有。

EN

回答 4

Stack Overflow用户

发布于 2015-01-20 05:27:50

Chrome可能不会发送If-None-Match的一个原因是,当响应包含"HTTP/1.0“而不是"HTTP/1.1”状态行时。一些服务器,比如Django的开发服务器,会发送较旧的头文件(可能是因为它们不支持keep-alive),当它们这样做时,ETags就不能在Chrome中工作了。

在Response Headers部分,点击查看源,而不是解析的版本。第一行可能会显示类似HTTP/1.1 200 OK的内容-如果显示为HTTP/1.0 200 OK,Chrome似乎忽略了任何ETag头文件,并且不会在下一次加载此资源时使用它。

可能还有其他原因(例如,确保您的ETag标头值是在引号内发送的),但在我的例子中,我删除了所有其他变量,这是一个重要的原因。

更新:看看你的截图,似乎这就是你的情况(来自Python的HTTP1.0服务器)!

假设您正在使用Django,在本地设置文件中添加以下技巧,否则您将不得不在您和./manage.py runserver守护进程之间添加一个实际的HTTP/1.1代理。这个变通方法是monkey patches,关键的WSGI类,由Django内部使用,使它发送一个更有用的状态行:

代码语言:javascript
复制
# HACK: without HTTP/1.1, Chrome ignores certain cache headers during development!
#       see https://stackoverflow.com/a/28033770/179583 for a bit more discussion.
from wsgiref import simple_server
simple_server.ServerHandler.http_version = "1.1"
票数 21
EN

Stack Overflow用户

发布于 2015-04-14 13:03:32

还要检查浏览器中是否禁用了缓存,就像开发网站时经常做的那样,这样您就可以始终看到最新的内容。

票数 14
EN

Stack Overflow用户

发布于 2016-11-27 05:57:54

Chrome也没有为我发送“If-None-Match”头。我没有任何缓存控制标头。我关闭了浏览器,再次打开它,它开始像预期的那样发送'If-None-Match‘头。因此,重新启动浏览器是检查您是否遇到此类问题的另一个选择。

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

https://stackoverflow.com/questions/22733905

复制
相关文章

相似问题

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