4

cURL を使用して HTTP POST を実行しています

$url = "http://localhost:8080/~demo/cgi-bin/execute/100";

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);

//execute post
$result = curl_exec($ch);
echo("$result");
//close connection
curl_close($ch);

投稿は実行されますが、応答は次のエラーとともに表示されます。

要求された URL /~demo/100 は、このサーバーで見つかりませんでした


(どういうわけか) cURL が URL を変更したため、上記の URL は明らかにサーバーではなく存在しません。

だったはず/~demo/cgi-bin/execute/100です。この URL はブラウザで機能します。

なぜそれをするのか教えてください。そして、どうすればこれを止めることができますか?

4

4 に答える 4

2
  • Fiddlerをインストールします。
  • デバッグを有効にします。
  • ブラウザでサイトにアクセスします。
  • phpcURLコードを実行します。

Fiddlerは、Webサーバーが送受信しているものを正確に通知します。ローカルで実行しているので、phpが送信しているものも正確に確認できます。2つを比較すると、問題がわかります。

于 2009-02-02T22:25:26.370 に答える
1

cURL がデフォルトの http ポート 80 にアクセスしようとしている可能性がありますか? 使ってみて

curl_setopt($ch, CURLOPT_PORT, 8080)
于 2009-02-02T22:41:26.837 に答える
0

URL を変更しているのは cURL ではなく、Web サーバーが別の場所を指すリダイレクト ヘッダーを cURL に送信している可能性があります。おそらく、以下が役立つでしょう:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
于 2009-02-02T08:16:01.763 に答える
0

どこですか?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
于 2009-03-12T05:12:10.887 に答える