gpt4 book ai didi

java - Grizzly + Jersey 仅在本地主机上收听

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:54:05 26 4
gpt4 key购买 nike

我正在使用带有嵌入式版本的 Grizzly 的 Jersey,我只想在本地主机上绑定(bind)/监听。我正在通过创建调用使用 GrizzlyWebContainerFactory 创建 ThreadSelector:

threadSelector = GrizzlyWebContainerFactory.create("http://127.0.0.1:8080/", initParams);

这有效,但我仍然能够从外部机器访问服务器。我怎样才能让它绑定(bind)到/只听本地主机?

这是用于配置的东西,所以我不希望任何开箱即用的东西能够连接到这个服务器。

最佳答案

我能够使用 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

而当使用 URIs "http://0.0.0.0:9580/my-app/""http://myhost.com:9580 启动 Grizzly 服务器时/my-app/" 我可以点击它

> 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 - Grizzly + Jersey 仅在本地主机上收听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050407/

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