-1

我正在使用的应用程序接受三种不同类型的登录。如果客户端从某些 IP 地址或 POST 请求(从普通浏览器呈现的形式)或向 JSON 读取 API 端点连接,则自动连接。

所有三个选项都归结为调用相同的函数来注册用户并生成会话。

尽管据我所知代码路径是相同的,但其中两个始终有效,而一个始终未能将“Set-Cookie”标头添加到响应中,即使应用程序逻辑生成了一个在响应体。

从来不需要深入研究会话身份验证是如何工作到这种详细程度的,我意识到我不明白。'Set-Cookie' 标头应该来自哪里。应用程序逻辑是否应该始终手动构建标头?一旦session_start()被调用,PHP 会自动执行它吗?Apache 是否基于标头的其他部分执行此操作?

grep -ri "set.cookie" *我在我正在使用的代码库中找不到任何东西,从而排除了 1 。

4

1 回答 1

1

session_start发送会话缓存限制器会话 cookie(或使用您的 PHPSESSID 设置 $_GET 键)。

此函数是 Set-Cookie 参数的发送来源。然后,Apache 在将页面发回时会将其传递回浏览器。

但是您需要记住,存储 cookie 实际上取决于浏览器。总的来说,它们的设置没有问题,但某些条件会阻止这种情况发生,例如 Internet Explorer 中的安全设置或用户完全拒绝 cookie。

进一步阅读:

http://www.php.net/manual/en/function.session-start.php

http://www.php.net/manual/en/function.session-get-cookie-params.php

http://www.php.net/manual/en/function.session-status.php

于 2012-11-16T10:24:11.007 回答