【问题标题】:Heroku Proxy Issue with outbound HTTPS connections出站 HTTPS 连接的 Heroku 代理问题
【发布时间】:2018-08-02 15:57:16
【问题描述】:

我正在一个 heroku free dyno 上运行 Java 8 Spring Boot 应用程序。我的应用程序是一个 REST API,它驱动一个单页应用程序,该应用程序使用 JWT 使用 Auth0 进行保护。

这在其他主机(AWS 等)上运行良好,但在 heroku 上,当我运行应用程序、身份验证和 javascript 客户端调用 REST api 时,我收到以下错误

Caused by: java.lang.IllegalArgumentException: protocol = https host = null
2018-02-14T13:48:35.702463+00:00 app[web.1]: at sun.net.spi.DefaultProxySelector.select(DefaultProxySelector.java:177) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702464+00:00 app[web.1]: at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1150) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702465+00:00 app[web.1]: at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702466+00:00 app[web.1]: at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702479+00:00 app[web.1]: at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702480+00:00 app[web.1]: at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702481+00:00 app[web.1]: at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702482+00:00 app[web.1]: at java.net.URL.openStream(URL.java:1045) ~[na:1.8.0_161-heroku]
2018-02-14T13:48:35.702484+00:00 app[web.1]: at com.auth0.jwk.UrlJwkProvider.getJwks(UrlJwkProvider.java:58) ~[jwks-rsa-0.2.0.jar!/:na]

我相信这是一个代理问题。谁能告诉我来自heroku dyno的http请求是否通过代理重定向?如果是这样,我相信我可以通过在我的 JVM 启动中添加以下标志来解决这个问题

-Dhttp.proxy=...

我非常坚持这一点,如果没有解决方案,我无法在 heroku 上成功运行我的应用程序。有没有其他人在 Heroku 上运行时遇到过类似的情况?

非常感谢。

【问题讨论】:

    标签: java spring spring-boot heroku auth0


    【解决方案1】:

    是的,Heroku 通过它自己的路由器发送您的请求,该路由器终止 SSL/HTTPS。因此,当请求到达您的应用程序时,请求是在 HTTP 中。

    【讨论】:

    • 不,这是从 heroku 上的应用到外部端点 auth0.com 的 https 请求
    • 我明白了。那么不,出站请求不是通过代理设置的
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多