English 中文(简体)
cURL 在 POST 后更改 URL
原标题:
  • 时间:2009-02-02 08:10:20
  •  标签:

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

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

The requested URL /~demo/100 was not found on this server.


显然,上述URL不存在于服务器上,因为(不知何故)cURL改变了URL。

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

Please tell me why does it do that? AND how can i stop this, for what I want?

问题回答
  • Install Fiddler.
  • Enable debugging.
  • Visit the site in the browser.
  • Execute php cURL code.

Fiddler会准确地告诉你Web服务器正在接收和发送什么。由于您正在本地运行,因此您也可以看到PHP正在发送什么。比较两者就可以告诉您问题所在。

可能 cURL 尝试访问默认的 http 端口 80?尝试使用

curl_setopt($ch, CURLOPT_PORT, 8080)

可能不是cURL改变了URL,而是web服务器向cURL发送了重定向头,指向不同的位置。也许下面的内容会有所帮助:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

在哪里? (Zài nǎlǐ?)

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);




相关问题
热门标签