PHP curl : problem setting HTTP_HOST

标签 php apache curl proxy

我已经使用 php 和curl 设置了内部代理。大部分工作已完成,但是,我在设置 HTTP_HOST header 字段时遇到问题。这是我正在使用的代码:


代理服务器上的代码::

$data_server_url = "http://IP_ADDRESS_OF_MY_CONTENT_SERVER/";
$request_uri="";
if(isset($_SERVER['REQUEST_URI'])) { $request_uri = $_SERVER['REQUEST_URI']; };
$curl_url="${data_server_url}${request_uri}";

//Pass all these fields as-they-are-got from the client to the content server.
$field_array=array("HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET",
      "HTTP_ACCEPT_ENCODING", "HTTP_ACCEPT_LANGUAGE", "HTTP_CONNECTION",
      "HTTP_HOST", "HTTP_REFERER", "HTTP_USER_AGENT");

$curl_request_headers=array();

foreach ($field_array as &$field) {
   if(isset($_SERVER["$field"])) {
      $curl_request_headers["$field"]=$_SERVER["$field"];
   } else {
      $curl_request_headers["$field"]="";
   };
};

//Open connection
$curl_handle = curl_init();
//Set the url, number of POST vars, POST data
curl_setopt($curl_handle, CURLOPT_URL, $curl_url);
curl_setopt($curl_handle, CURLOPT_POST, count($_POST));
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $curl_request_headers);
//Execute post
$result = curl_exec($curl_handle);
//Close connection
curl_close($curl_handle);

但是,在我的内容服务器上,$_SERVER['HTTP_HOST'] 设置为其自己的 IP 地址(它应该为 null 或通过其访问代理服务器的 HTTP_HOST 变量)。

谁能建议解决办法是什么?

最佳答案

来自the documentation :

value should be an array for the following values of the option parameter:

     ...

CURLOPT_HTTPHEADER    An array of HTTP header fields to set, in the format
                       array('Content-type: text/plain', 'Content-length: 100')

所以,是的,我认为你没有正确设置它们。

关于PHP curl : problem setting HTTP_HOST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291051/

相关文章:

php - CodeIgniter insert_batch : Field 'exp_user' doesn't have a default value

php - IMAP/PHP 中的 Thunderbird "Tags"

php - 通过 exec() 运行 PhantomJS - 包含 ~/.fonts 的问题

javascript - 使用 React CORS 访问 api 内容

node.js - 将我的curl POST 转换为 Node JS OAuth2 token 请求

php - 在 function() 中使用 $query ="SELECT"...

javascript - 如何将数据添加到模式 PHP、MySQL Ajax

apache - Spring security 3并发 session 控制在tomcat集群环境中不起作用

c# - Web 服务 - C# 客户端和 Apache 服务器基本身份验证 - 错误 HTTP 400 错误请求

java - 有没有办法发现 REST API 的所有端点?