响应的HTTP缓存-控制无缓存指令的语法允许field-name参数。
RFC7234#5.2.2.2说:
5.2.2.2. no-cache
Argument syntax:
#field-name
// ...
If the no-cache response directive specifies one or more field-names,
then a cache MAY use the response to satisfy a subsequent request,
subject to any other restrictions on caching.
// ...规范声明no-cache指令可以“指定一个或多个字段名”。RFC7230#3.2将field-name定义为令牌。
规范似乎没有涵盖多个字段名是如何分隔/分隔的。
缓存控制无缓存字段名是如何分隔/分隔的?
没有字段名的示例(最常见的用法)
Cache-Control: no-cache具有单个字段名的示例(从未亲自见过,技术上有效)
Cache-Control: no-cache=foo多字段名?
Cache-Control: no-cache=foo,bar
Cache-Control: no-cache=foo,bar
Cache-Control: no-cache=foo, bar
Cache-Control: max-age=60, private, no-cache=foo, bar, min-age=30
Cache-Control: max-age=60, private, no-cache="foo, bar", min-age=30对我来说,只有最后一个例子(双引号的no-cache值)是明确的。
正确的格式是什么?
我要求正确解析任意的Cache-Control头值。
发布于 2019-11-15 22:23:17
RFC在RFC2616#14.9的BNF:
"no-cache" [ "=" <"> 1#field-name <"> ] ; Section 14.9.1
RFC2616#2.1解释说,#规则是一个列表:
#规则一致性 .lists=‘lists 3’> (四)自愿性、无偿性 在最基本的商品要素中,每一种产品都被一个或多个较高的标准逗号相分离。 (“”,“”)和可选的可选的、可选择的、可接受的、线性的、可接受的、线性的、可接受的、自愿的、自愿的 中转站、转轨制等转轨制 更多的产品可以被看作是自愿性的。 1#element
RFC2616#2.2告诉你<">的意思是"
<"> = <US-ASCII double-quote mark (34)>
因此,它将是Cache-Control: max-age=60, private, no-cache="foo, bar", min-age=30,就像您在上一个版本中所做的那样。
https://stackoverflow.com/questions/52874429
复制相似问题