有没有办法获取远程服务器向我的 api 服务器发出请求的来源信息?目的是防止可能的服务器到服务器身份验证令牌欺骗。
为了进行测试,我基本上从侦听端口8000的测试服务器向服务器发送了远程请求。虽然req.connection.remote.address
api 服务器记录的记录是一致的,但req.connection.remote.port
每次请求都会更改。
有没有办法从 api 服务器的请求对象中获取测试服务器的地址及其端口8000 ?一个开箱即用的解决方案也将受到赞赏。
有没有办法获取远程服务器向我的 api 服务器发出请求的来源信息?目的是防止可能的服务器到服务器身份验证令牌欺骗。
为了进行测试,我基本上从侦听端口8000的测试服务器向服务器发送了远程请求。虽然req.connection.remote.address
api 服务器记录的记录是一致的,但req.connection.remote.port
每次请求都会更改。
有没有办法从 api 服务器的请求对象中获取测试服务器的地址及其端口8000 ?一个开箱即用的解决方案也将受到赞赏。
有没有办法从 api 服务器的请求对象中获取测试服务器的地址及其端口 8000?
不,除非请求服务器在非标准(自定义)标头中专门为您提供该信息,否则没有。它不是 TCP/IP 或 HTTP 的一部分,您不会知道发出请求的是什么类型的 http 客户端,或者它甚至实际上是一个向您的 http 服务器发出请求的 http 服务器。从网络的角度来看,它只是某个 IP 地址上的一些 http 客户端,您不知道该 http 客户端可能在做什么(在您的情况下也是一个 http 服务器)。
传入的 TCP/IP 连接永远不会来自请求 Web 服务器的公共传入端口。相反,它来自某个动态分配的出站端口,每个请求可能都不同。这就是 TCP/IP 的工作原理。出站端口是在创建套接字时动态分配的,它们来自与通常用于侦听传入请求不同的端口范围。
如果请求来自合作服务器,那么您可以要求它设置一个自定义标头,指示它为传入请求运行的端口,但如果它不是合作服务器,则您无法知道哪个端口is 监听传入的请求,或者它甚至是一个服务器。