【问题标题】:Handle redirection and cookies in PHP and cURL to run curl -b -c -d -Lvk in php在 PHP 和 cURL 中处理重定向和 cookie 以在 php 中运行 curl -b -c -d -Lvk
【发布时间】:2021-03-18 06:40:25
【问题描述】:

我正在尝试使用 PHP 和 cURL 调用 Rest API。由于 Firewall(F5) 限制,端点 URL 重定向到“my.policy”,设置一些 cookie 并再次将其重定向回所需的端点 URL。

为了管理这个重定向和设置cookie,我发现curl -b cookie.txt -c cookie.txt -d cookie.txt -Lvk https://myendpointurl这个命令有助于在下一次重定向时自动存储和设置cookie,并且运行良好。

但是如何在 PHP 中实现呢?

我尝试设置 COOKIEJAR 和 COOKIEFILE 文件并将 FOLLOWLOCATION 设置为 true,但没有成功。

curl_setopt($curl_request, CURLOPT_URL, $url);
curl_setopt($curl_request, CURLOPT_POST, 1);
curl_setopt($curl_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($curl_request, CURLOPT_HEADER, 1);
curl_setopt($curl_request, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_request, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl_request, CURLOPT_RETURNTRANSFER, 1);    
curl_setopt($curl_request, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_request, CURLOPT_POSTREDIR, CURL_REDIR_POST_301);
curl_setopt($curl_request, CURLINFO_HEADER_OUT, 1);
curl_setopt($curl_request, CURLOPT_COOKIEJAR, dirname(__FILE__) .'/cookies.txt');
curl_setopt($curl_request, CURLOPT_COOKIEFILE, dirname(__FILE__) .'/cookies.txt');

如何在PHP和cURL中执行上述curl命令?

【问题讨论】:

    标签: php rest curl cookies


    【解决方案1】:

    我发现要通过HTTPS存储和调用cookies,只需要curl -b cookie.txt -c cookie.txt -Lvk https://myendpointurl就足够了,不需要-d

    要实现这一点,除了CURLOPT_POSTREDIR 的更改之外,我在问题中发布的代码就足够了。我将它从CURL_REDIR_POST_301 更改为CURL_REDIR_POST_ALL,这意味着它在所有重定向的URL 中都使用POST 方法。

    我将其发布为可能对遇到相同情况的人有所帮助的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-10
      • 2017-10-13
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 2015-03-13
      相关资源
      最近更新 更多