[英]What application component in a LAMP stack, sets the "Set-Cookie" header
我正在使用的应用程序接受三种不同类型的登录。 如果客户端从某些 IP 地址或 POST 请求连接,无论是从普通浏览器呈现的表单,还是朝向 JSON 读取 API 端点,都会自动连接。
所有三个选项都归结为调用相同的函数来将用户注册为登录并生成会话。
尽管我可以确定代码路径是相同的,但其中两个始终有效,而一个始终无法向响应添加“Set-Cookie”标头,即使应用程序逻辑生成一个 sessionid 并在反应体。
从来不需要深入研究会话身份验证如何工作到这种详细程度,我意识到我不明白。 'Set-Cookie' 标头应该来自哪里。 应用程序逻辑是否应该始终手动构建标头? 一旦session_start()被调用,PHP 会自动执行吗? Apache 是否根据标头的其他部分执行此操作?
我通过在我正在使用的代码库中找不到任何带有grep -ri "set.cookie" *
内容来排除 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.