java – Grizzly Jersey仅在Localhost上收听

前端之家收集整理的这篇文章主要介绍了java – Grizzly Jersey仅在Localhost上收听前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用带有嵌入式Grizzly版本的Jersey,我只想在localhost上绑定/监听.我正在使用带有create调用的GrizzlyWebContainerFactory创建ThreadSelector:
threadSelector = GrizzlyWebContainerFactory.create("http://127.0.0.1:8080/",initParams);

这有效,但我仍然可以从外部机器上打服务器.我怎样才能让它绑定到/只听本地主机?

这是配置的东西,所以我不希望任何关闭框能够连接到这个服务器.

解决方法

我能够使用Jersey 2.3.1中的主机名localhost和嵌入版本的Grizzly来做到这一点:
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
// ...
GrizzlyHttpServerFactory.createHttpServer(
    URI.create("http://localhost:9580/my-app/")
);

测试结果如下:

> curl -I http://myhost.com:9580/my-app
curl: (7) couldn't connect to host

而当使用URI“http://0.0.0.0:9580/my-app/”或“http://myhost.com:9580/my-app/”启动Grizzly服务器时,我能够点击它同

> curl -I http://myhost.com:9580/my-app
HTTP/1.1 200 Not Found
...

以下是使用GrizzlyHttpServerFactory时哪些主机使用哪些URL的表.据我所知,这里没有惊喜:

# For http://0.0.0.0:9575/my-app      | Works?
curl -I http://0.0.0.0:9575/my-app    | Yes
curl -I http://127.0.0.1:9575/my-app  | Yes
curl -I http://localhost:9575/my-app  | Yes
curl -I http://myhost.com:9575/my-app | Yes
                                      | 
# For http://127.0.0.1:9575/my-app    | 
# For http://localhost:9575/my-app    |
curl -I http://0.0.0.0:9575/my-app    | Yes
curl -I http://127.0.0.1:9575/my-app  | Yes
curl -I http://localhost:9575/my-app  | Yes
curl -I http://myhost.com:9575/my-app | No
                                      | 
# For http://myhost.com:9585/my-app   | 
curl -I http://0.0.0.0:9585/my-app    | No
curl -I http://127.0.0.1:9585/my-app  | No
curl -I http://localhost:9575/my-app  | No
curl -I http://myhost.com:9585/my-app | Yes

猜你在找的Java相关文章