gpt4 book ai didi

java - 如何配置 com.sun.net.httpserver 仅接受来自本地主机的请求?

转载 作者:行者123 更新时间:2023-12-01 19:52:44 25 4
gpt4 key购买 nike

我正在使用 com.sun.net.httpserver.HttpServer 来处理一些 http 请求。我的 http 服务器运行在 nginx 后面,它映射服务器域名,并通过将其用作在某个端口运行的代理将请求转发到我的服务器。如果我的 http 服务器访问服务器正在运行的端口,则它们会接受所有请求。我想要一种机制,以便服务器只接受来自应该可用的域的请求,就像我在 nginx 中使用的一样。我想如果我可以强制 http 服务器只能由 localhost 访问,那将会有所帮助。

实现这一目标的最佳方法是什么?

最佳答案

I guess it would help if I could force the http server to be accessable by localhost only.

Java SE HttpServer 实例1 监听其绑定(bind)到2 的 IP 地址上的请求。因此将其绑定(bind)到环回 IP 地址,如下所示:

InetAddress localHost = InetAddress.getLoopbackAddress();
InetSocketAddress sockAddr = new InetSocketAddress(localHost, 80);
HttpServer server = HttpServer.create(sockAddr, 0);

更一般地说,如果您只想接受来自一组给定 IP 地址的请求,一种方法是在处理程序中调用 HttpExchange::getRemoteAddress,并在远程地址不存在时采取适当的操作。你想要什么。但请注意,远程地址将是直接上游 IP 地址。它可能是您的反向代理,也可能是远程用户使用的某些正向代理。

但是,如果您正在寻找可以接受所有请求但仅响应发送到特定域名的请求(按照传统虚拟主机文件)的东西,我认为您将必须自己实现该过滤。 HttpServer 被设计为一个简单的轻量级服务器......而不是一个功能齐全的 Web 容器。

<小时/>

1 - 这只适用于 JDK 提供的 HTTPServer 类。对于其他人,YMMV。
2 - 除非您绑定(bind)到通配符地址...

关于java - 如何配置 com.sun.net.httpserver 仅接受来自本地主机的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50770747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com