gpt4 book ai didi

google-chrome - Chrome 不发送 if-none-match

转载 作者:行者123 更新时间:2023-12-02 20:14:06 26 4
gpt4 key购买 nike

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

Chrome request

使用 Firefox,我可以完美地得到 304

Firefox request

我想我错过了一些东西,我尝试使用 Cache-Control: max-age=10 进行测试,但没有任何结果。

最佳答案

Chrome 无法发送 If-None-Match 的原因之一是响应包含“HTTP/1.0”而不是“HTTP/1.1”状态行。某些服务器(例如 Django 的开发服务器)会发送较旧的 header (可能是因为它们不支持 keep-alive),当它们这样做时,ETag 在 Chrome 中不起作用。

Sample HTTP/1.0 server response source

在“响应 header ”部分中,单击“查看源代码”而不是已解析的版本。第一行可能会显示类似 HTTP/1.1 200 OK 的内容 - 如果显示 HTTP/1.0 200 OK Chrome 似乎会忽略任何 ETag header 并且下次加载此资源时不会使用它。

也可能有其他原因(例如,确保您的 ETag header 值在引号内发送),但就我而言,我消除了所有其他变量,这才是重要的。

更新:看看你的屏幕截图,看来这也正是你的情况(来自 Python 的 HTTP/1.0 服务器)!

假设您使用的是 Django,请将以下 hack 放入本地设置文件中,否则您必须在您和 ./manage.py runserver 之间添加实际的 HTTP/1.1 代理守护进程。此解决方法monkey patches Django 内部使用的关键 WSGI 类,使其发送更有用的状态行:

# 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"

关于google-chrome - Chrome 不发送 if-none-match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22733905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com