*** 开启时无法访问 REST 端点

Posted

技术标签:

【中文标题】*** 开启时无法访问 REST 端点【英文标题】:Can't hit REST endpoint when *** is on 【发布时间】:2020-08-16 11:53:12 【问题描述】:

我对网络有非常基本的了解。请ELI5

我有一些命中测试 REST 端点 (GET) 的 Java 代码。 https://postman-echo.com/get?foo1=bar1&foo2=bar2

在我的本地环境中运行我的代码并且我关闭了我的公司 *** 时,我可以无错误地访问该端点。

当我打开公司 *** 时,我开始收到奇怪的错误,特别是 javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

连接到 *** 时可能导致我的 java 代码中断的原因是什么?

更奇怪的是,当我在打开 *** 的情况下在浏览器中输入端点时,我能够点击端点,因为一切正常。

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
                  .url("https://postman-echo.com/get?foo1=bar1&foo2=bar2")
                  .build();

try (Response response = client.newCall(request).execute()) 
    return response.body().string();

编辑

我可以访问两个代理,一个在我的浏览器中使用产生 400 错误,另一个在我的代码中工作。为什么在使用 *** 时需要代理?我的 2 个代理之间有什么不同,为什么一个会在我的代码中生成 400 而另一个不会?

【问题讨论】:

【参考方案1】:

我坚信您需要通过代理拨打电话,因为这发生在公司网络中。由于浏览器使用 *** 设置进行 HTTP/HTTPS 调用,因此浏览器中不会出现此问题。在代码中添加代理设置即可解决问题。

【讨论】:

您部分正确,我们可以访问 2 个代理。如果我使用浏览器中使用的代理,我的代码中会出现 400 错误代码。如果我使用浏览器未使用的第二个代理,它似乎可以工作。您能否提供一些背景信息,说明为什么在使用 *** 时需要代理,以及为什么一个生成 400 而另一个有效。这两个代理有什么不同? 代理是连接外部世界的方式。所有请求都将通过代理,并且某些请求将根据配置的策略被阻止。传入和传出请求也有不同的策略。根据公司的基础架构要求,两个不同的代理可能有两种不同的意图。

以上是关于*** 开启时无法访问 REST 端点的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 docker 容器中的 REST 端点

使用 Login Module JBoss Approach 成功登录后,无法(拒绝访问响应)执行带有注释 @RolesAllowed 的 rest 端点

Pod 无法访问 kubelet 端点

无法使用 useHTTPS 访问 Grapevine rest 服务器

引导 2.6 升级后无法访问端点

Wordpress REST API (wp-api) 404 错误:无法访问 WordPress REST API