我想使用IETF 尚未标准化的新cookie-prefixes 。这些是__Secure-
和__Host-
。
所以让我们设置这个cookie(这里是服务器返回的标头):
Set-Cookie: "__Host-apple=yummy; Secure; HttpOnly; Path=/"
我现在想在 nginx 中使用$cookie-
变量访问这个 cookie。因此,为了进行测试,我使用 echo 模块向我展示 cookie 的值:
location = /wannaeat/ {
echo $cookie___Host-apple;
}
但是 nginx 总是向我展示-apple
。似乎使用连字符 ( -
) 来拆分变量。
因为当我例如命名 cookie __Host_apple
(和 nginx 变量$cookie___Host_apple
)时,nginx 会正确地显示我的值。
我知道我可能可以$http_cookie
使用正则表达式来找到正确的 cookie,但这是不可能的,因为我想要map
cookie 值。
首先,
map
实际上是否支持正则表达式匹配:(因此你应该很高兴去!)
但是,为了讨论和评论,由于您尝试使用的还不是标准,您最好去他们的邮件列表或其他类似的东西,并告诉他们他们打算做的事情是一个非常糟糕的主意.
为此,我在浏览器中访问了 Cookie 管理器,查看
_
下划线与-
最短破折号的使用情况。至少 90% 的网站/cookie 大量使用下划线,而 cookie 中的破折号使用率可能远低于 5%。在变量名中无效的原因
-
非常简单,而且历史悠久——因为该符号经常在几乎所有编程语言中用于代替减号(破折号、减号、mdash:---)。反过来,根据re_format(7)
andpcrepattern(3)
,这种情况也是广泛使用的正则表达式实现的一部分,其中下划线始终被认为是单词的一部分,而破折号不是。我想同样的问题会在许多其他语言以及 nginx.conf 中重演。