上下文
为了解决CORS问题,我想知道header Access-Control-Allow-Headers的有效值是什么。
Whatwg CORS关于头语法的规范在ABNF中告诉我:
Access-Control-Allow-Headers = #field-name
RFC7230告诉我:
field-name = token
token = 1*tchar
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA此外,Whatwg状态还指出:
ABNF是指由HTTP (特别是加法#)和RFC 7405增强的ABNF。RFC7405
好的,我现在知道这个响应头无效:
Access-Control-Allow-Headers: Origin, Content-Type, content type, Accept, Authorization
字段名不应包含空白,但这将导致我的问题:
问题
#symbol的规范参考在什么地方?它不是定义ABNF语法的RFC5234。我觉得这有点像逗号分隔的字段,但我没有找到真正的引用。
PS:问题不是“Access-Control-Allow-Headers__的有效值是什么”。
发布于 2020-09-28 12:03:04
这个“由HTTP增强的(特别是加法#)”来自RFC 7230 -超文本传输协议(HTTP/1.1):消息语法和路由部分7. ABNF列表扩展:#rule
对RFC5234的ABNF规则的一个#规则扩展用于提高某些标头字段值定义中的可读性。 构造"#“的定义类似于"*",用于定义以逗号分隔的元素列表。完整的表单是"
<n>#<m>element“,表示至少<n>和最多的<m>元素,每个元素由一个逗号(",")和可选空格(OWS)分隔。 在使用列表构造的任何产品中,发件人不得生成空列表元素。换句话说,发送方必须生成满足以下语法的列表: 1#element =>元素*( OWS ",OWS元素) (...)
因此,#field-name变成了“零或多个field-name (由逗号分隔,由可选的线性空格包围)”,因为n和m分别默认为0和无穷大。
https://stackoverflow.com/questions/64101573
复制相似问题