我正在尝试设置一个 php 页面,该页面使用 cURL 来访问第三方服务器以登录它们。现在我的代码确实成功登录到第三方服务器,但由于 cURL 没有向用户发送 SESSION cookie,因此用户必须自己登录

我怎样才能让 cURL 将 cookie 转发给客户端。谢谢

有帮助吗?

解决方案

查看以下cURL选项的文档

CURLOPT_COOKIE
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR

修改

在更彻底地阅读您的问题之后,我不敢告诉您除非您将客户端重定向到您尝试授权它们的网站,否则无法将cookie写入客户端浏览器。浏览器cookie以称为同源策略的安全模型运行。这基本上意味着域只能为其OWN域发布cookie,并且不能为其他域发布cookie。在您的特定情况下:

client --CONTACTS--> foo.com --cURL-LOGIN--> bar.com
bar.com --bar.com-COOKIE--> foo.com --foo.com-COOKIE--> client
client --foo.com-COOKIE--> bar.com (Will not work)

基本上,foo.com无法在bar.com的客户端上创建cookie!

其他提示

用户的浏览器很可能不允许您为其他域设置Cookie。

您可以在PHP代码中登录并获取(例如)Hotmail的会话cookie。但是您无法将该会话传递给用户(因此他/她也将登录)。

这是因为许多浏览器和配置拒绝设置第三方Cookie。

您可以在用户的​​浏览器中设置 cookie,而无需将其重定向到服务器。您需要做的就是让用户使用其中的curl 代码访问您的php 页面。然后你可以获取他的发布数据并将该数据发送到服务器。但不要让服务器重定向您。将选项设置为 CURLOPT_FOLLOWLOCATION 作为 false 并设置 CURLOPT_HEADER 如今,抓住标头并提取cookie和位置标题,然后将其作为标头传递给客户端浏览器(如标题)(位置:...) 和 header("Set-Cookie:....)。您还可以通过提取其他标头来发送它们。以下[帖子] html页面无法通过libcurl获取cookie 有类似的情况

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top