我有一段代码使用 curl 执行发布 http 请求并返回输出。我正在发出发布请求的网站具有从 http 到 https 的重定向。
当我向 https 端口发出 post 请求时,一切正常。当我对 http 端口执行相同的请求(并被重定向到 https 端口)时,我得到一个空字符串。拜托,谁能告诉我为什么它不起作用以及如何正确地做到这一点。
执行 post 请求的函数:
function curl_query($url, $username, $password, $payload) {
$additionalHeaders = "";
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded',$additionalHeaders));
curl_setopt($process, CURLOPT_HEADER, false);
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, $payload);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($process, CURLOPT_MAXREDIRS, 4);
curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
$return = curl_exec($process);
return $return;
}
将查询从端口 80 重定向到端口 443 的 .htaccess 条目:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
更新 经过一些调试后,我发现在初始 POST 并被重定向到新位置之后 curl 正在发送 GET 请求。是否可以将初始 POST 重新发送到新位置?