标题Cache-Control: max-age=0意味着内容被认为是陈旧的(并且必须立即重新获取),这实际上与之相同Cache-Control: no-cache.
我的问题是:有时浏览器过度缓存了一些资源,即使我已经修改过它们.但是在F5之后,一切都很好.
我整个下午都研究过这个案子.现在我完全理解"Last-Modified"或"Cache-Control"的观点.我知道如何解决我的问题(只是.js?版本或显式max-age = xxxx).但问题仍然没有解决:浏览器如何在没有 "Cache-Control"的情况下处理响应头,如下所示:
Content-Length: 49675
Content-Type: text/html
Last-Modified: Thu, 27 Dec 2012 03:03:50 GMT
Accept-Ranges: bytes
Etag: "0af7fcbdee3cd1:972"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Thu, 24 Jan 2013 07:46:16 GMT
Run Code Online (Sandbox Code Playgroud)
当他们"进入酒吧"时,他们会清楚地缓存它们

我正在使用MSXML的XmlHttpRequest对象发出请求:
IXMLHttpRequest http = new XmlHttpRequest();
http.open("GET", "http://www.bankofcanada.ca/stat/fx-xml.xml", False, "", "");
http.send();
Run Code Online (Sandbox Code Playgroud)
并且send成功了,我得到了我的xml数据.
除了XmlHttpRequest实际上没有打网络(我可以看到没有发出实际的http请求).并且Process Monitor显示文件实际上是从我的缓存中提供的:

所以我想指示XmlHttpRequest用户代理任何超过0秒的缓存内容都太旧了.执行此操作的标准方法是添加请求标头:
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)
发送请求:
http = new XmlHttpRequest();
http.open("GET", "http://www.bankofcanada.ca/stat/fx-xml.xml", False, "", "");
http.setRequestHeader("Cache-Control", "max-age=0");
http.send();
Run Code Online (Sandbox Code Playgroud)
并且send成功了,我得到了我的xml数据.
除了XmlHttpRequest实际上没有打网络(我可以看到没有发出实际的http请求).Process Monitor显示文件实际上是从我的缓存中提供的.
那有什么不对?是max-age不是在做什么我想它呢?
来自RFC 2616 - 超文本传输协议,第14部分:标题字段定义:
其他指令允许用户代理修改基本过期机制.可以在请求中指定这些指令:
max-age
表示客户端愿意接受年龄不大于指定时间(秒)的响应.除非还包括最大指令,否则客户不愿意接受陈旧的响应.
这正是我想要的.
是Cache-Control: max-age=0不是我想要的,或者是MSXML的XmlHttpRequest对象错误?
这是MSXML XmlHttpRequestCOM对象:
该max-age指令由客户端添加,以供所有要遵守的缓存使用.来自RFC:
Cache-Control通用头字段用于指定请求/响应链中的所有缓存机制必须遵守的指令 …
因此,我为 Next.js 寻找了一些不需要在服务器端进行任何工作的身份验证选项。我的目标是阻止用户在没有密码的情况下进入网站。
我已经使用 NextAuth 设置了一些测试(经过几次其他尝试),显然我可以使用会话和 cookie 阻止页面,但经过几个小时的研究,我仍然找不到如何阻止资产(例如/public 文件夹中的 /image.png)来自未经身份验证的请求。
如果没有自定义服务器,这是否可能?我在这里缺少一些核心理解吗?
提前致谢。
我是否应该使用自定义HTTP标Authorization头在我的RESTFul服务中传递JSON Web令牌或HTTP 标头.
我已经阅读了自定义HTTP授权标题,但如果我使用标题符号,则无法理解明显的缺点X-ABC-Token.
在阅读REST授权:授权标题与JSON正文中的用户名/密码后,我觉得授权似乎是不错的选择.
如果我使用HTTP授权,那么我相信我可以使用方案承载来实现这一点,如 rfc6750中所述
请建议我在每个HTTP请求中传递此令牌的最佳方法是什么.