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的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中跨服务器传输会话

JS常用的7中跨域方式总结

如何在php中跨线程共享全局变量?

javascript中跨域的http post请求

多种解决react中跨域问题方案

多种解决react中跨域问题方案