4

我有一个情况,其中两个 cookie 具有相同的名称但域略有不同(cookie1 具有域 example.com,而 cookie2 具有包含子域的 .example.com)。

cookies[ :cookie_name ] = { :value => "test_value_cookie_1", :domain => "example.com" }
cookies[ :cookie_name ] = { :value => "test_value_cookie_2", :domain => ".example.com" }

我想检测两个 cookie 何时存在,但不幸的是我不知道如何通过它自己的域访问 cookie。我可以说

if cookies[ :cookie_name ].blank?

但我怎么说

if cookies[ :cookie_name, :domain => ".example.com" ].blank?

或者

if cookies[ :cookie_name ].domain[ ".example.com" ].blank?

我正在使用“actionpack-2.3.11/lib/action_controller/cookies”。我不明白为什么您可以设置域等信息,但不能访问它。

4

1 回答 1

4

显然我想做的事情是不可能的。HTTP 规范只允许通过名称访问 cookie,即使它们可以通过域设置:

从 HTTP 服务器请求 URL 时,浏览器会将 URL 与所有 cookie 匹配,如果其中任何一个匹配,则包含所有匹配 cookie 的名称/值对的行将包含在 HTTP 请求中。这是该行的格式: Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ... http://curl.haxx.se/rfc/cookie_spec.html

于 2011-09-19T15:42:10.770 回答