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无缓存字段名称进行定界/分隔?
没有字段名称的示例(最常用)
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
标头值。
答案 0 :(得分:0)
我认为可以这样做:
Cache-Control: max-age=60, private, no-cache=foo, no-cache=bar, min-age=30
答案 1 :(得分:0)
RFC在RFC2616#14.9的BNF如下:
"no-cache" [ "=" <"> 1#field-name <"> ] ; Section 14.9.1
RFC2616#2.1解释了#
规则是一个列表:
#rule
定义了一个构造体“#”,类似于“ *”,用于定义
的列表 元素。完整格式至少是表示“ #element”的
和最多元素,每个元素之间用一个或多个逗号分隔
(“,”)和可选的线性空白(LWS)。这使通常的
列表的形式很容易;
之类的规则 ( LWS元素((* LWS元素“,” * LWS元素)))
可以显示为
1#元素
RFC2616#2.2告诉您<">
只是意味着"
<"> = <US-ASCII double-quote mark (34)>
因此,就像上一个一样,它就是Cache-Control: max-age=60, private, no-cache="foo, bar", min-age=30
。