【问题标题】:Retrieve the session cookies in the proxy server (PHP)检索代理服务器中的会话 cookie (PHP)
【发布时间】:2016-08-15 12:16:34
【问题描述】:

我正在尝试在我大学的 webkiosk 和我的客户之间建立一个代理服务器,以便我可以代表我的客户进行身份验证并通过抓取大学服务器来缓存他的数据。我打算使用它开发一个 HTML5 应用程序,以便我可以从浏览器数据库实现中向客户端提供这些详细信息,以供他离线访问。但问题出在登录过程中。我成功地向服务器发送了一个帖子查询,向它发送了登录表单的详细信息。但是,我无法存储服务器返回的会话 cookie,这导致我无法继续经过身份验证的会话。

我在互联网上研究了 2 周,但我找不到任何东西。谁能指导我如何解决这个问题?

P。 S. 我使用 PHP 作为我的服务器端语言。

【问题讨论】:

  • 如果您的响应头中存在cookie,它将自动保存在浏览器中。您可以使用 PHP 方法 setcookie 将 cookie 添加到响应头。
  • 我不想在浏览器中保存 cookie。我想把它保存在 PHP 服务器中,它将拦截浏览器和大学服务器之间的流量。
  • 向我们展示您已经尝试过的内容,目前还不清楚您要做什么。具有预期结果的伪代码就足够了
  • @Swanav 为什么将cookie保存在服务器中,您必须基于身份验证创建会话。 cookie 值。
  • 我的大学提供了一个网络信息亭,供学生检查他们的分数、考勤等。遗憾的是,用户体验很糟糕,而且信息亭不是一个应用程序,我们可以在不上网的情况下访问我们以前的数据。所以我打算构建一个应用程序,它与我的服务器通信以获取数据。我的服务器反过来使用用户的凭据来访问 webkiosk 并将数据缓存在我的服务器中。我可以轻松地获取用户的凭据并向 webkiosk 发送帖子查询,就像他们自己的登录表单一样。我无法复制的是他们的登录页面在浏览器中存储了一个会话变量。

标签: php curl cookies


【解决方案1】:

我可以想到两种使用 cURL 的方法:

1) 有点难看,更容易使用(我认为满足您的需要)

$url = '';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);

preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $result, $matches);
$cookies = array();
foreach($matches[1] as $item) {
    parse_str($item, $cookie);
    $cookies = array_merge($cookies, $cookie);
}
var_dump($cookies);

2) PHP 的“预期”方式:

$filepath = '';
curl_setopt($ch, CURLOPT_COOKIEJAR, $filepath);

第二种方式为您提供保存在文件中的 cookie,您可以使用该文件在 curl 调用之间保持会话。这意味着,您只需将此选项传递给 curl,除非您重置会话,否则您将使用您保存的会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2017-11-09
    • 1970-01-01
    • 2012-06-28
    • 2013-01-04
    相关资源
    最近更新 更多