我想要使用IETF尚未标准化的新cookie前缀 。 这些是__Secure-和__Host- 。
所以让我们来设置这个cookie(这里是服务器返回的头文件):
Set-Cookie: "__Host-apple=yummy; Secure; HttpOnly; Path=/"
我想用$cookie-variables在nginx中访问这个cookie。 所以为了testing,我使用echo模块来显示cookie的值:
location = /wannaeat/ { echo $cookie___Host-apple; }
然而nginx总是显示我-apple 。 它似乎使用连字符( - )拆分variables。
因为当我例如命名cookie __Host_apple (和nginxvariables$cookie___Host_apple )nginx正确显示我的值。
我知道我可以使用$http_cookie并使用正则expression式来查找正确的cookie,但这是不可能的,因为我想map cookie值。
首先, map实际上支持正则expression式的匹配:
源值被指定为string或正则expression式(0.9.6)。
(所以你应该很好走!)
但是,为了讨论和评论,因为你试图使用的不是一个标准,你最好去他们的邮件列表或其他东西,并告诉他们,他们打算做的是一个非常糟糕的主意。
为了这个原因,我去了浏览器中的Cookiepipe理器,看看下划线和最短划线的用法。 下划线至less占用了90%以上的网站/ cookies,而cookies内短划线的使用率可能低于5%。
之所以在variables名中是无效的,是因为它非常简单,并且和白天一样古老 – 因为这个符号通常用于几乎所有的编程语言而不是减号(dash,minus,mdash:—) 。 反过来,根据re_format(7)和pcrepattern(3) ,这个场景也是广泛使用的正则expression式实现的一部分,其中下划线总是被认为是单词的一部分,而短划线符号不是。
我可以想象,同样的问题会在许多其他语言以及nginx.conf中重演。