сменить URL после POST - PullRequest
       30

сменить URL после POST

4 голосов
/ 02 февраля 2009

Я делаю HTTP POST, используя cURL

$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 был не найден на этом сервере .


Приведенный выше URL, очевидно, не существует не на сервере, поскольку (каким-то образом) cURL изменил URL.

Это должно было быть /~demo/cgi-bin/execute/100. Этот URL работает в браузере.

Пожалуйста, скажите мне, почему он это делает? И как я могу остановить это, для чего я хочу?

Ответы [ 4 ]

2 голосов
/ 03 февраля 2009
  • Установить Fiddler.
  • Включить отладку.
  • Посетите сайт в браузере.
  • Выполнить код php cURL.

Fiddler точно скажет вам, что веб-сервер получает и отправляет. Так как вы работаете локально, вы также можете видеть, что именно php отправляет. Сравните два, и это скажет вам проблему.

1 голос
/ 03 февраля 2009

Может быть, cURL пытается получить доступ к стандартному http-порту 80? Попробуйте использовать

curl_setopt($ch, CURLOPT_PORT, 8080)
0 голосов
/ 12 марта 2009

где?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
0 голосов
/ 02 февраля 2009

Может быть не cURL, который изменяет URL, скорее веб-сервер отправляет заголовок перенаправления в cURL, указывая в другом месте. Возможно, поможет следующее:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
...