1. 程式人生 > >AKKA HTTP:限制訪問介面服務的請求HOST

AKKA HTTP:限制訪問介面服務的請求HOST

介面服務部署上線後,需要對請求方進行限制,主要是限制請求的主機,只有指定主機發過來的請求才被受理,否則拒絕服務。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要加在請求頭中,官網的說明: