【问题标题】:Method to have both HTTPS and HTTP with embedded Spark server?使用嵌入式 Spark 服务器同时拥有 HTTPS 和 HTTP 的方法?
【发布时间】:2014-11-06 04:12:06
【问题描述】:

我有使用 Spark 支持 HTTPS 的小型嵌入式服务器。我还想支持/捕获一些 HTTP 调用;例如比如帮助页面和一些重定向。

例如帮助页面:

  http://localhost:8088/help .... renders .... http::8088//localhost/help.html

或登录页面:

  http://localhost::8088/login ... renders .... https::8089//localhost/login.html

我已经发展到我有一个嵌入式服务器响应 HTTP x 或 HTTPS 的阶段——一个或另一个,而不是同时响应。是否可以使用相同的嵌入式 Jetty(通过 Spark)服务器响应这两种协议?如果不是,在同一个嵌入式应用程序中运行两个 Jetty 服务器是否可行?我可以在同一个应用程序中运行两个 Spark 服务器吗? (我将其视为“read”,如果 Jetty 不这样做,要求 Spark 提供该服务将是一个死胡同。

如果我可以使用我的 Spark 服务器来侦听和处理这两种协议,我的首选答案是。到目前为止,我的调查表明只有一种模式是可能的,主要是因为 Spark 实际上是一个静态库,你只能设置一个端口;而且您可能只有一个“Spark”服务器。有人对 HTTP 和 HTTPS 使用相同的端口吗? (这对我来说似乎并不“好”)。

我确实找到了看起来像是同时使用这两种协议的单元测试代码,TestSparkUtil 在这里:

不过,这是在测试服务器并使用大量已弃用的 API。最后一个想法是,我可以使用第二个(嵌入式)仅 Jetty servlet 将 HTTP 调用重定向到 HTTPS 吗?你会推荐吗?

我确信这里有一个优雅的解决方案。提前感谢您花时间考虑本文提出的问题。

【问题讨论】:

    标签: java http https jetty-9 spark-java


    【解决方案1】:

    GitHub 上有一个拉取请求来解决这个问题。

    https://github.com/perwendel/spark/pull/329

    更新:所有的更改都在提交中与主分支合并 here

    【讨论】:

    • 拉取请求中没有文档,但据我从源代码更改中可以看出,将有两个端口(4567 和 4568) - 一个侦听 http,另一个侦听 https 请求。
    • 如果能够将 http 重定向到 https 在同一个端口上,那就太好了
    【解决方案2】:

    对于任何感兴趣的人,George answer 中的拉取请求在主分支中不再可用。当前正确的方法是使用实​​例 API。官方文档中没有文档,但可以在下面的新闻页面中找到详细信息和示例。

    http://sparkjava.com/news#spark-25-released

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 2014-09-23
      • 2010-11-26
      相关资源
      最近更新 更多