这是应该立即发生还是在一段时间后发生,还是我只是想念其他一些?
它应该立即发生。(草稿)规范指出:
如果
Clear-Site-Data
报头存在于从网络接收到的HTTP响应中,则必须在将响应呈现给用户之前清除数据。
此外,正如您在此评论中提到的那样,仅在请求安全时(https
或localhost
)才支持该功能。
我准备了一个简单的测试,其中包含两个资源:
index.html
-链接到CSS文件的页面,并且还接受?clear
查询参数以CSD
在响应中包含标头style.css
-带有随机颜色的CSS页面,以使其重新生成时清晰可见,该页面声明自己可缓存行为与Firefox 76.0.1中指定的相同;当使用接收资源时Clear-Site-Data: "cache"
,缓存将在获取其子资源之前被清除。
Clear-Site-Data
:index.html
通过输入URL和击球Enterstyle.css
是从缓存中提供的,并且页面颜色不会更改Clear-Site-Data
:index.html?clear
通过输入URL和击球Enterstyle.css
是不从缓存中,并在页面颜色的变化#!/usr/bin/python3
import http.server
import socketserver
import random
PORT = 8000
class SampleDataHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
if ".css" in self.path:
self.send_response(200)
self.send_header('Content-Type', 'text/css')
self.send_header('Cache-Control', 'max-age=3600')
self.end_headers()
color = b"%06x" % random.randint(0, 0xFFFFFF)
self.wfile.write(b"html{background-color: " + color + b";}\n")
else:
self.send_response(200)
if '?clear' in self.path:
self.send_header('Clear-Site-Data', '"cache"')
self.end_headers()
self.wfile.write(b"<link rel=stylesheet href=style.css>This is the content.\n")
httpd = socketserver.TCPServer(("", PORT), SampleDataHandler)
httpd.serve_forever()
可能是由于
?clear
旗帜吗?因为即使没有该Clear-Site-Data
指令,任何随机变量也?string
应至少在您初次访问时清除缓存。如果您反复携带?clear
国旗参观该怎么办?您还可以在浏览器检查器中验证它是否实际上是从缓存中提供的吗?是的,当没有
CSD
发送标头时,“网络”选项卡确认已从缓存中提供该服务。请注意,style.css
是(或没有)从缓存中提供的,而不是initialindex.html
。我正在做类似的事情(但在PHP中)。介意
index.html?clear
通过链接index.html
到自身的链接多次访问后是否发送了浏览器检查器的屏幕截图吗?注意:点击刷新似乎是故意清除缓存,因此它必须来自自我链接。我终于找到了为什么我无法使它起作用:
Clear-Site-Data
仅在localhost
或上起作用https
。我不认为这是“正式”记录的。我一直在非本地Docker URL上对其进行测试,这就是为什么它永远无法正常工作的原因。经过测试,localhost
我可以CSD
立即验证作品。尽管我无法测试您的示例,但是它仍然在某种程度上对我有所帮助,因此我将接受它。好发现!该行似乎断言在Firefox中,这是不被视为“安全”的URI的禁止操作。它可能应该列出具有仅限于安全上下文的功能。