我想从我的网站向远程网页发送一些数据。实际上它可以通过形式隐藏变量来实现。但出于安全原因,我想在标题中设置为post变量,然后发送到该网页。我使用这段代码
$post_data = 'var1=123&var2=456';
$content_length = strlen($post_data);
header('POST http://localhost/testing/test.php HTTP/1.1');
header('Host: localhost');
header('Connection: close');
header('Content-type: application/x-www-form-urlencoded');
header('Content-length: ' . $content_length);
header($post_data);
但我的代码无法正常运行。 帮助我...
答案 0 :(得分:2)
POST数据构成HTTP请求的主体,它不是标头,并且头方法用于制作HTTP 响应。
来自PHP的答案 1 :(得分:2)
您正试图将请求标题放入回复。客户只是不知道如何处理它。
你想要达到的目标是不可能的。
你要完成的任务是什么?可以有另一种方式。
答案 2 :(得分:1)
如果您尝试向远程服务器发布请求,则需要使用cUrl之类的工具。这是一个例子:
// Create a curl handle to a non-existing location
$ch = curl_init('http://localhost/testing/test.php');
// Set options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute
$page = curl_exec($ch);
或者,如果您真的想将数据放入标题中,可以使用以下内容设置自定义标题:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('field: value', 'field2: value') );
答案 3 :(得分:1)
重定向POST标头的唯一方法是HTTP 1.1 Redirect with 307/308
307临时重定向
header('HTTP/1.1 307 Redirect');
header('Location: target.php', false, 307);
308永久重定向
header('HTTP/1.1 308 Redirect');
header('Location: target.php', false, 308);
!!!只有在重定向代码以这种方式设置2次时才能在PHP中工作! 如果你只做第二行。 PHP进行了正常的302重定向。
由于安全原因,客户端会从浏览器获取一条消息是否接受此重定向。