AKKA HTTP:限制访问接口服务的请求HOST

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/javajxz008/article/details/82804714

接口服务部署上线后,需要对请求方进行限制,主要是限制请求的主机,只有指定主机发过来的请求才被受理,否则拒绝服务。akka http的API中的HostDirectives可实现此项功能,有以下三个可选项供选择:

def host(hostNames: String*): Directive0
def host(predicate: String ⇒ Boolean): Directive0
def host(regex: Regex): Directive1[String]

 限制主机名,主机判断,正则匹配等等。详细可参见官网文档:

https://doc.akka.io/docs/akka-http/current/routing-dsl/directives/host-directives/host.html#host

基于我的需求,只需要指定主机名就可以了,即第一个方法。

val route = host("hadoop01.com","hadoop02.com"){
    get{
       path("info"){
           业务逻辑
           complete("OK")
       }
    }
}

在发送请求时在header中要将请求的Hostname添加进去,只有配置了允许的主机名才可以访问。

需要说明的是,hostname要加在请求头中,官网的说明:

猜你喜欢

转载自blog.csdn.net/javajxz008/article/details/82804714
今日推荐