cURL在POST后更改URL

时间:2009-02-02 08:10:21

标签: php post curl httpwebrequest

我正在使用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);

帖子被执行,但响应显示错误:

  

请求的网址/ ~demo / 100是   在此服务器上找不到


显然,上述URL并不存在于服务器中,因为(某种程度上)cURL已经更改了URL。

应该是/~demo/cgi-bin/execute/100。此URL可在浏览器中使用。

请告诉我为什么这样做? 我怎么能阻止这个,为了我想要的?

4 个答案:

答案 0 :(得分:2)

  • 安装Fiddler。
  • 启用调试。
  • 在浏览器中访问该网站。
  • 执行php cURL代码。

Fiddler将告诉您Web服务器正在接收和发送的内容。既然你在本地运行,你也可以看到php发送的确切内容。比较两者,这将告诉你问题。

答案 1 :(得分:1)

也许cURL尝试访问默认的http端口80?尝试使用

curl_setopt($ch, CURLOPT_PORT, 8080)

答案 2 :(得分:0)

可能不是更改URL的cURL,而是Web服务器正在向cURL发送重定向标头,指向不同的位置。也许以下内容会有所帮助:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

答案 3 :(得分:0)

在哪里?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);