簡體   English   中英

我正在嘗試將標頭中的HTTP_X_FORWARDED_FOR傳遞給php服務器,但未在服務器中獲取其值

[英]I'm trying to pass HTTP_X_FORWARDED_FOR in header to php server but not getting its value in server

我在第一台服務器上設置以下php腳本以打印所有服務器值

var_dump($_SERVER)

從另一個服務器調用第一個服務器鏈接

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => FIRST_SERVER_URL,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => array(
    "HTTP_X_FORWARDED_FOR: 111.90.148.19",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

但是我沒有在$ _SERVER值中得到HTTP_X_FORWARDED_FOR的值

我試過這樣的javascript。

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", FIRST_SERVER_URL);
xhr.setRequestHeader("HTTP_X_FORWARDED_FOR", "111.90.148.19");    
xhr.send(data);

您應該根據HTTP規則在JS中設置標頭名稱,而不是PHP內部名稱。 標頭名稱實際上是:

X-Forwarded-For

因此,您的JS代碼應如下所示:

...
xhr.setRequestHeader("X-Forwarded-For", "111.90.148.19");
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM