当 session_start() 且 cookie_secure 等于 true 时,php 是否通过 HTTP 向本地主机发送 cookie?

问题描述 投票:0回答:2

如果我为服务器启动如下所示的会话,并且本地主机客户端尝试通过

HTTP
请求服务器,它是否会以
session cookie
响应?

还是必须通过HTTPS?

我读了doc,它确实说只能通过 HTTPS,但我想知道 localhost 是否是一个例外。

session_start([
    'cookie_secure' => true
]);
php cookies
2个回答
0
投票

是的,确实如此:

如果您在浏览器中尝试此操作,您还会看到一条警告,指出 cookie 被拒绝。

这是有道理的,因为 PHP 无法控制整个通信通道,并且最终用户可能连接到安全代理,该代理在内部重定向到未加密的 HTTP 服务器。


0
投票

事实上,在 first 交互中,cookie 会以任何一种方式发送到浏览器。由浏览器来解释如何处理这些设置。但设置

cookie_secure
没有任何效果:cookie 已发送且有效(Chrome 122.0.626.95)。

有一种安全方法可以确保防止对 cookie 的解释,即在 cookie 名称前添加“__Secure-”前缀。

查看测试这些场景的repo

© www.soinside.com 2019 - 2024. All rights reserved.