PHP 中跨 HTTP 和 HTTPS 的 Cookie
Posted
技术标签:
【中文标题】PHP 中跨 HTTP 和 HTTPS 的 Cookie【英文标题】:Cookie across HTTP and HTTPS in PHP 【发布时间】:2011-01-20 05:50:50 【问题描述】:如何在 php 中设置一个在 HTTP 和 HTTPS 中都可读的 cookie?
如果这是不可能的,可以做什么?设置两个cookie?
【问题讨论】:
你用的是什么浏览器?我注意到在 IE9 中,我在 HTTPS 和 HTTP 中有一个 cookie,具有相同的密钥,但每个都有不同的值。即使 cookie 不是安全 cookie。 当我问这个问题时,我寻找适用于主流浏览器的解决方案。是的,提出的解决方案奏效了。 只需使用相同的域(或适当的父域),默认情况下可以通过 HTTP 和 HTTPS 访问 cookie。如果要明确,请将$cookie->setHttpOnly(false)
设置为github.com/delight-im/PHP-Cookie
【参考方案1】:
假设您的域名除了资源类型外保持不变,PHP(或任何语言)中的 cookie 可以从 HTTP 和 HTTPS 读取。
例如:
http://www.example.com
https://www.example.com
在这个例子中,cookies 可以相互读取。
【讨论】:
你忘了放例子 示例就在那里。我正在演示仅更改了资源标识符的相同 URL 仍将使用相同的 cookie。 Cookie 域基于 DNS 名称,不具备协议意识。澄清一下,您根本不需要做任何特别的事情来获得您想要的效果。有关更多信息,请参阅 Cookie 规范:curl.haxx.se/rfc/cookie_spec.html【参考方案2】:默认情况下,同一 URL 的 http 和 https 都可以读取 cookie。
但是,服务器可以选择在设置 cookie 时指定“安全”标志,这会告诉浏览器仅通过安全通道发送它,例如 SSL 连接。
在这种情况下,cookie 将仅通过 https 发送。未标记为安全的 cookie 将通过 http 和 https 发送。
【讨论】:
通过 https 发送时,cookie 是否未标记为安全、安全? (我想答案是肯定的)。 @Oversteer 是的,它通过 https 是安全的。问题是如果混合使用 http 和 https,cookie 只是部分时间是安全的。以上是关于PHP 中跨 HTTP 和 HTTPS 的 Cookie的主要内容,如果未能解决你的问题,请参考以下文章