我正在使用带有 axios 的 Node Express 服务器并请求后端的 api 调用来代理请求,但我想发送用户详细信息而不是服务器。
例如:
我的网站->用户点击图片->获取被调用到我的服务器 A->服务器调用另一个服务器 B 来检索数据。
现在 B 服务器将看到 A 服务器的信息,例如 ip、geo、isp 等。我如何将此类用户数据转发到 A 服务器,以便 B 服务器认为用户直接从网站调用了该服务器?
答案1
嗯,首先要理解的是,您所指的“geo”和“isp”等大量信息都是从 IP 地址本身派生出来的;因此,您要做的就是转发它。
您没有包含大量有关您的设置的信息,但是我包含了两种可能的设置。
1.反向代理
服务器 A 是反向代理,它使用代理将所有请求代理到服务器 B nginx
- 如果是这种情况,那么我们将使用Forwarded header
描述得很好的这里。
示例代码片段:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_pass http://server_b;
}
2.应用层 服务器 A 托管一个网站(或其他应用程序),该网站在后端向服务器 B 发送请求。
在这种情况下,如果不知道应用程序的具体工作原理,我建议您以某种方式将访问者的 IP 包含在请求有效负载中。
基本示例,如果您在服务器 A 上使用 PHP(并且此表单在传递给服务器 B 之前已提交给服务器 A):
<input type="hidden" id="visitorIP" name="visitorIP" value="<?php $_SERVER['REMOTE_ADDR']?>">