【问题标题】:Unauthorized Access when cURL PHP request with cookiescURL PHP请求带有cookies时的未经授权的访问
【发布时间】:2017-06-03 10:25:57
【问题描述】:

我正在尝试访问一个页面,例如http://www.domain.com/profile。操作和登录 url 相同,我正在尝试将 cookie 保存到 http://www.example.com/cookies.txt 以进行身份​​验证。这是我正在使用的代码:

$loginURL = 'http://www.domain.com/login';
$COOKIE_FILE = 'http://wwww.example.com/cookies.txt';
$postValues = array(
    'username' => 'myusername',
    'password' => 'mypassword'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $loginURL); 
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues));
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_COOKIEJAR, $COOKIE_FILE);
curl_setopt($curl, CURLOPT_USERAGENT, 'Chrome/35.0.2309.372');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_REFERER, $loginURL); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_exec($curl);
if(curl_errno($curl)){throw new Exception(curl_error($curl));}

// now we are logged in, attempt to access a password-protected page
curl_setopt($curl, CURLOPT_URL, 'http://www.domain.com/profile');
curl_setopt($curl, CURLOPT_COOKIEJAR, $COOKIE_FILE);
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
echo curl_exec($curl);

curl 请求似乎成功了,但我收到了来自服务器的回显一个页面,上面写着“未经授权的访问”。我认为我的 cookie 系统工作不正常?我该如何检查?我该如何解决?

【问题讨论】:

    标签: php authentication curl cookies login


    【解决方案1】:

    将 CURLOPT_COOKIEFILE 设置为与 CURLOPT_COOKIEJAR 相同的路径。 curl 从文件中读取并写入 jar。

    ETA:您的脚本不起作用的一个可能原因是您没有在第二个请求中发送第一个请求的 cookie 数据。

    【讨论】:

    • 我试过了,但没用。我应该能够使用echo file_get_contents($COOKIE_FILE) 看到我的 $COOKIE_FILE 内容,但它是空白的。
    • 您能解释一下不发送 cookie 数据是什么意思吗?我该怎么做?
    • 我只是试图改写第一句话。您需要 cookie 文件才能从文件中读取。但我不知道为什么你不能创建文件。也许先尝试使用本地文件?或者将 CURLOPT_VERBOSE 与 CURLOPT_STDERR 结合使用。
    【解决方案2】:

    所以实际的答案是通过 CAS 登录,这需要更复杂的身份验证过程。但是,我上面的代码不正确地使用了CURLOPT_COOKIEFILECURLOPT_COOKIEJAR,所以在我进行了这些修复之后,我发现我需要重新设计该方法。

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 1970-01-01
      • 2021-03-24
      • 2019-09-20
      • 2017-07-06
      • 2020-05-12
      • 2018-05-27
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多