直到几个星期,我所有的网站都运行得很好。
我编写代码并在CodeCanyon上销售。
但是最近(今天)我注意到我不能再登录到我在那里出售的代码片段的了。
如果我直接在我的域上工作,就像在地址栏中键入链接一样,在任何浏览器(meaning, all my _SESSION vars are kept, all throughout)中,一切都是完美的。
但是当我检查我的代码片段(all using password-protection and _SESSIONS var,在CodeCanyon的网站上)时,我似乎无法在Google中登录,因为_SESSIONS vars只是没有从一个页面传递到另一个页面。
奇怪的是,在Firefox中,甚至在Microsoft 中,它们都能工作。
我主要工作在Google (占我时间的99.5%),这是一个很好的浏览器。
但在这种情况下,我的登录密码保护的网站来自第三方网站,托管在他们的IFRAME,my _SESSIONS vars just don't seem to work (尽管多年来他们确实如此!)
我把session_start();放在所有文件的最顶层.
我甚至删除了第三方网站和我自己的域名的缓存和cookie,甚至重新安装了Chrome。Nothing。
在问这个问题之前,我在互联网上进行了研究,似乎把_SESSION var through从一个HTTPS网站转移到一个HTTP网站可能是个问题。第三方网站(CodeCanyon.net)是HTTPS,我的网站是HTTP。但是,为什么在Firefox和Microsoft中一切都是完美的呢?
对于这种情况,有基于PHP的解决方法吗?
我不得不说,直到3-4周前,每件事都很完美地运作了多年,我偶然发现我无法登录我的演示网站,我的演示网站,我有在CodeCanyon上出售的偶然,今天。
========================
第一编辑:
发布于 2020-08-24 13:40:40
===============
在网上挖了6个小时后,我找到了答案。
在一个HTTPS安全主机(加载在IFRAME中)之间向我的_SESSIONS不安全主机传输(交叉引用)所需的代码正在添加以下内容
ini_set('session.cookie_samesite', 'None');
ini_set('session.cookie_secure', 'true');
session_start();这告诉浏览器,我允许在两个不同的主机(cookie_samesite = None)之间通过_SESSION数据的安全HTTPS (cookie_secure = True)进行传输,这样就可以启动_SESSION。我说的是PHP服务器端的变量。
但是,为了实现_SESSION vars的跨源安全传输,或者在两个不同的主机(xxx.com和yyy.net)之间进行传输,我的终端也必须是HTTPS。
因此,将_SESSION vars从主机传输到另一个不同主机的唯一方法是真正的安全连接,如果您没有启用HTTPS,则需要为您的域名获取HTTPS证书。
因此,如果您在域上启用了HTTPS,则上述变量只工作(例如。去买一个HTTPS证书,在我的国家价格从14欧元开始,你通常可以在你拥有域名和主机的托管公司上找到这些)。
===================
发布于 2020-08-24 07:46:42
https://stackoverflow.com/questions/63539472
复制相似问题