将Akka HTTP重定向到HTTPS

问题描述 投票:0回答:1

[目前,我有一个可同时用于HTTP和HTTPS的API,但是即使URL是使用HTTP调用的,我也需要将它路由到HTTPS。例如,两者都在工作:

http://app1_0.cloud.example.net/getSomething
https://app1_0.cloud.example.net/getSomething

Akka文档中有一些关于为证书添加httpscontext的内容,但是我不确定是否需要这样做,因为我已经在使用HTTPS。这就是它被称为的路线:

Http().bindAndHandle(aliveResponse ~ route, host, port)

hostportapplication.conf中定义。

是否有一种方法可以仅添加重定向或强制转换以确保将其发送到HTTPS?

def marketsRoute = {
   pathPrefix("markets") {
     pathEnd{
       logRequestResult("Read markets", akka.event.Logging.InfoLevel) {
       get {
            implicit val timeout = Timeout(20, TimeUnit.SECONDS)

         val sitesResp = WaitListDAO.getMarkets
         complete(HttpResponse( entity = HttpEntity(MediaTypes.`application/json`, sitesResp.toJson.toString)))

         }
        }
      }
     }
    }
   }
scala https akka-http
1个回答
0
投票

除非HTTPS服务器也在同一应用程序中被bindAndHandle编辑,否则您无需定义HttpsConnectionContext

HTTPS重定向的路由(从此相关的blog post中提取)应如下所示:

blog post

请注意,如果您使用标准HTTPS端口(即443),则不需要val route = scheme("http") { extract(_.request.uri) { uri => redirect( uri.withScheme("https").withAuthority(hostName, portHttps), StatusCodes.MovedPermanently ) } }

© www.soinside.com 2019 - 2024. All rights reserved.