Cookie在移动Safari中重定向后未定义


Cookie is undefined after redirect in mobile Safari

我有一点代码,设置了一个$userid cookie,然后重定向如下:

$userid = $_GET['userid'];
setcookie('userid',$userid,time() + (864000 * 7), '/');
header("Location: https://coinbase.com/oauth/authorize?response_type=code&client_id=$clientid&redirect_uri=$redirecturi");

这很好用。如果我在设置$_COOKIE['userid']后回显它,它会显示用户ID。到目前为止还不错。

重定向到Coinbase OAuth页面,用户必须登录并允许我的网站访问他们的钱包。过程结束后,Coinbase将用户重定向到$redirecturi,这与设置的cookie代码所在的页面相同。

然后,我使用$_COOKIE['userid']来确定哪个用户通过了身份验证过程,并存储我从Coinbase收到的数据。此外,我会检查是否设置了$_GET['code'],因此代码的两部分是分开的(我不会意外地再次将$_GET['userid']设置为cookie)。

示例URL:

脚本位置:http://example.com/dev/startcoinbase.php?userid=abcdef

用户的URL:http://example.com/dev/startcoinbase.php?userid=abcdef

从Coinbase:http://example.com/dev/startcoinbase.php?code=code 重定向

真正奇怪的是,当我的代码在iOS应用程序的UIwebview中运行时,在Chrome和桌面上的FF上运行时,效果很好,但在移动Safari浏览器中却不好(即使应用内的webview使用相同的引擎?!)。

如有任何帮助,我们将不胜感激!

域和协议http / https是否相同?http://example.comhttps://example.com的Cookie可以不同。

还要注意子域,可能sub.example.com cookie在example.com上不可见。

如果你在Safari中启用了cookie,你应该检查(我认为你已经检查了,但如果没有,那就检查):)