【问题标题】:Understand & fix php session lost between https and http了解并修复 https 和 http 之间丢失的 php 会话
【发布时间】:2013-09-03 01:33:08
【问题描述】:

我从头开始开发了一个 mvc 站点,并且在本地可以正常工作,但真是令人惊讶!尝试上传到我的主机的网站不起作用。

登录顺序如下: 每个页面都会检查您是否已登录 (http),如果未登录则重定向到登录页面 (https)。 您总是会被重定向到登录页面。

经过一番研究,我发现了原因:https和http之间的php会话丢失。

我不明白为什么在本地和远程都不能工作,但我认为由于 php 本地设置将 php 会话标识符设置为 http 和 https 的 PHPESSID 而远程设置不。

考虑到麻烦,我知道我可以解决将会话标识符从 https 传递到 http 或使整个站点 https 重写 url 的问题,如下所示:

intranet.mysite.com/anypage/

托管共享 ssl https://server.subdomain/~user/public_html/intranet/anypage/

附加信息

该页面托管在 hostgator 下。 url 路径是

网站 内网.mydomain.com

ssl 共享访问 https://gatorxxx.hostgator.com/~user/intranet

如何使会话在 url 之间工作?

谢谢。

【问题讨论】:

    标签: php session ssl


    【解决方案1】:

    如果我理解正确,您将 SSL 页面托管在不同的域上?然后 PHP 会话 cookie 会丢失,因为 cookie 是由子域(或域,无论 cookiedomain 设置为哪个)绑定的。

    【讨论】:

    • 网络托管在 Intranet 子域下,如下所示:intranet.mysite.com 但我必须使用 server.domain.com/~user/intranet,因为我使用共享 ssl,我不能使用私有ssl。
    • 您可以将带有请求参数的会话 ID 发送到 https / http 环境,并使用类似 session_id($_GET['session']); 的东西重新初始化会话。如果不与发出的请求交换此信息,就无法跨不同域使用(会话)cookie。
    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2010-10-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多