curl を使用して post http リクエストを実行し、出力を返すコードがあります。投稿リクエストを行っている Web サイトには、http から https へのリダイレクトがあります。
https ポートへの投稿リクエストを行うと、すべて正常に動作します。http ポートに対して同じ要求を行う (そして https ポートにリダイレクトされる) と、空の文字列が返されます。なぜ機能しないのか、正しく行う方法を誰か教えてください。
投稿リクエストを行う関数:
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 を新しい場所に再送信することは可能ですか?