0

当我想设置会话 cookie 时,我遇到了一些非常奇怪的错误。

如果我使用以下规则:

session_set_cookie_params(0, '/', $_SERVER['HTTP_HOST'], false, true);
//$_SERVER['HTTP_HOST'] resolves into "jscripting.nl"

它总是会放一个“。” 在 url 前面,它将始终使我的 session_id 可以在我的所有子域上访问,这是一个问题,因为我在我的一个子域上开发并且 session_id 可能会相互干扰。

是我做错了什么还是我的服务器设置有问题?

4

1 回答 1

2

$_SERVER['HTTP_HOST']与服务器设置无关,它来自客户端发出的请求的 Host 标头。

如果要使用在服务器端配置的服务器名称,通常的方法是使用$_SERVER['SERVER_NAME'],但在某些情况下也会受到主机头的影响。

编辑:显然,域的任何值都将默认附加一个点,因此它将包括任何子域,并且使其仅应用于当前域的唯一有效方法是不设置参数或使用原始标头设置 cookie . 在这个线程的主题上查看更多信息。

null您可以通过设置域名参数使cookie httponly 仍然在您的情况下工作。

于 2013-03-25T20:49:34.070 回答