0

Pedestal と Reitit を使用した Clojure アプリケーションがあり、origin ヘッダー パラメータを必須にする必要があります。

;; deps
[io.pedestal/pedestal.service "0.5.5"]
[pedestal/pedestal.jetty "0.5.5"]
[reitit-pedestal "0.5.5"]
[reitit "0.5.5"]

しかし、自分のスキーマを入れると、リクエストは例外をスローします。

(s/defschema my-request
  {:header {:origin s/Str}})

["/my-route"
    {:get  {:parameters  my-request
            :handler     my-handler}}]

例外:

:errors {:origin missing-required-key}

{
  "message": "Bad Request",
  "exception": "clojure.lang.ExceptionInfo: clojure.lang.ExceptionInfo in Interceptor :reitit.http.coercion/coerce-request - 
  Request coercion failed: #reitit.coercion.CoercionError{:schema {:origin java.lang.String, Keyword Any}, :errors {:origin missing-required-key}}

リクエスト

curl -X GET "http://localhost:3000/my-route -H  "accept: application/json" "origin: TEST" -H  "user-agent: test"

CURL リクエストは機能しますが、問題は GET メソッドを使用した Swagger UI のみにあります。

get メソッドの Swagger は、cors の攻撃を避けるためにオリジン ヘッダー パラメータを送信しないようです。

これを回避できますか?

ご協力いただきありがとうございます

4

1 に答える 1