ajax 以外のリクエストを拒否するディレクティブを作成しようとしています。以下のコードは明らかに機能しません。
import akka.http.scaladsl.model.HttpHeader
import akka.http.scaladsl.server.Directive0
import akka.http.scaladsl.server.directives.BasicDirectives
import akka.http.scaladsl.server.directives.HeaderDirectives
import akka.http.scaladsl.server.directives.RouteDirectives
trait AjaxDirectives extends BasicDirectives with HeaderDirectives with RouteDirectives {
private val valid = "XMLHttpRequest"
def ajax(): Directive0 = {
headerValueByName("X-Requested-With") { header ⇒
if (header == valid) {
pass
} else {
reject
}
}
}
}
(ここで 2 つの問題: pass
is Directive0
& headerValueByName
is Directive1
、およびheaderValueByName
is Directive1
& ajax
is Directive0
。したがって、コンパイルされません)
私の質問は、どうにかしてローカル スコープの抽出を行うことはできますか? のように、header
エスケープしませんajax
。
を使用せずにヘッダーを引き出すリクエストにアクセスできることはわかっているheaderValue*
ので、それで答えないでください。