javascript - 我正在尝试将标头中的 HTTP_X_FORWARDED_FOR 传递给 php 服务器,但没有在服务器中获取其值
问题描述
我在第一台服务器上设置以下 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");
...
推荐阅读
- javascript - 在反应中,如何在获取后更新状态?
- git - Git 不跟踪修改过的文件
- ubuntu - Ubuntu Freeradius 登录到 AWS
- jmeter - com.thoughtworks.xstream.io.StreamException:
- json - 当类型正确时,可解码类型上的 typeMismatch
- java - 执行简单的 SPRING MVC 示例时出现异常严重:无法销毁与 ProtocolHandler 关联的端点
- ansible - 当条件只是跳过
- php - PHPEXCEL:如何根据计数动态合并单元格
- javascript - 在CKEditor插件中,无法复制复制格式中的标题
- python - 使用图像时的 ValueError == None