我正在使用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可在浏览器中使用。
请告诉我为什么这样做? 我怎么能阻止这个,为了我想要的?
答案 0 :(得分:2)
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);