【发布时间】:2012-08-10 04:29:39
【问题描述】:
如果我使用 PHP 向运行包含 session_start() 的代码的远程服务器执行 cURL POST,是否可以在远程访问本地计算机上设置的会话变量?
【问题讨论】:
如果我使用 PHP 向运行包含 session_start() 的代码的远程服务器执行 cURL POST,是否可以在远程访问本地计算机上设置的会话变量?
【问题讨论】:
不,他们没有。即使发送会话 cookie(您可以使用 cURL POST 执行)也会引用仅存在于请求服务器上的会话。
【讨论】:
没有。
会话变量是特定于服务器的。只有在正确设置会话 ID 并且使用共享会话数据存储(例如 memcached)时,它们才会跨到另一台服务器。
【讨论】:
除非您打开了 PHP trans_sid 选项(坏主意),否则 POST 与会话值无关。这是通过标准 cookie 调节的。
Cookie 受同域安全设置的约束 - 它们可以在同一域中的主机之间共享(例如 foo.example.com 和 bar.example.com),但亚马逊 cookie 不能与 Yahoo 共享。
【讨论】:
session.use_trans_sid 关闭并不会禁止 php 使用通过 post 字段在请求中传递的会话 ID。 session.use_only_cookies 是最接近的设置。我相信你知道这一点,但你帖子的大多数读者可能不知道。
session.use_only_cookies,并且多年来一直如此。试试吧。 pastebin.com/xhYa33Kp