0

我正在使用以下代码使用 cURL 发送 POST 请求。这是完美的工作。我唯一的问题是地址栏中的位置不会自行更新。

发送此请求的网页是 www.somedomain.com/merge.php,但在帖子执行后地址栏仍然显示 www.somedomain.com/merge.php 而不是 www.somedomain.com/preview.php

我试过使用 curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); 没有运气。

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'www.somedomain.com/preview.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, 'landscape=true');
curl_exec ($c);
curl_close ($c); 

谢谢

4

5 回答 5

3

你误解了发生了什么。涉及三方:

client (browser)  <---->   your server  <---->   somedomain.com

客户端向您的服务器发送 HTTP 请求,您的服务器向 somedomain.com 发送 HTTP 请求。您的服务器将收到响应,客户端与它无关。如果要重定向客户端,则需要从服务器向客户端发出适当的 HTTP 响应,告诉它重定向到其他地方。因为客户端正在与您的服务器对话,而不是 somedomain.com。无论您的服务器和 somedomain.com 之间发生什么,都与它无关。

如果您希望客户端直接向 somedomain.com 发送 POST 请求,您需要创建一个 POST 到 somedomain.com 的表单或使用 Javascript 触发等效的东西。

于 2012-11-26T13:50:40.560 回答
1

您不能使用 cURL 来执行此操作,因为请求不是在浏览器中启动的,而是来自 PHP。

如果您希望浏览器更新 URL,那么您应该查看在当前页面中发布 FORM。

于 2012-11-26T13:48:46.227 回答
1

当您使用 curl 发出请求时,您正在以编程方式访问 url,这仅发生在服务器端。

这不会更改地址栏中的 url。

如果您想重定向到新网址,请使用

header('redirect', 'http://newurl.com');
于 2012-11-26T13:49:20.970 回答
0

这是不可能的。您使用 cURL 并从服务器发出请求。但是您可以在客户端更改 URL。

您可以使用

Header("Location:http://www.somedomain.com/preview.php") curl_close($c) 之后;

但我认为这不是正确的解决方案。

于 2012-11-26T13:51:01.670 回答
0

这不可能。

这是PHP Post & Redirect with cURL Same As HTML Form上的同一个问题

尽管该问题已关闭,但您可以阅读有效答案以帮助您澄清问题。

于 2014-01-09T21:40:51.313 回答