首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP缓存控制无缓存字段名是如何分隔的?

HTTP缓存控制无缓存字段名是如何分隔的?
EN

Stack Overflow用户
提问于 2018-10-18 12:48:34
回答 1查看 259关注 0票数 1

响应的HTTP缓存-控制无缓存指令的语法允许field-name参数。

RFC7234#5.2.2.2说:

代码语言:javascript
复制
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定义为令牌。

规范似乎没有涵盖多个字段名是如何分隔/分隔的。

缓存控制无缓存字段名是如何分隔/分隔的?

没有字段名的示例(最常见的用法)

代码语言:javascript
复制
Cache-Control: no-cache

具有单个字段名的示例(从未亲自见过,技术上有效)

代码语言:javascript
复制
Cache-Control: no-cache=foo

多字段名?

代码语言:javascript
复制
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头值。

EN

回答 1

Stack Overflow用户

发布于 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,就像您在上一个版本中所做的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52874429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档