File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1313 (str " ALLOW-FROM " (:allow-from frame-options))
1414 (str/upper-case (name frame-options))))
1515
16+ (defn- add-header [response header value]
17+ (some-> response (resp/header header value)))
18+
19+ (defn frame-options-response
20+ " Add the X-Frame-Options header to the response. See: wrap-frame-options."
21+ [response frame-options]
22+ (add-header response " X-Frame-Options" (format-frame-options frame-options)))
23+
1624(defn wrap-frame-options
1725 " Middleware that adds the X-Frame-Options header to the response. This governs
1826 whether your site can be rendered in a <frame>, <iframe> or <object>, and is
3341 {:pre [(or (= frame-options :deny )
3442 (= frame-options :sameorigin )
3543 (allow-from? frame-options))]}
36- (let [header-value (format-frame-options frame-options)]
37- (fn [request]
38- (if-let [response (handler request)]
39- (resp/header response " X-Frame-Options" header-value)))))
44+ (let [header-name " X-Frame-Options"
45+ header-value (format-frame-options frame-options)]
46+ (fn
47+ ([request]
48+ (add-header (handler request) header-name header-value))
49+ ([request respond raise]
50+ (handler request #(respond (add-header % header-name header-value)) raise)))))
4051
4152(defn wrap-content-type-options
4253 " Middleware that adds the X-Content-Type-Options header to the response. This
Original file line number Diff line number Diff line change 4141 (let [handler (wrap-frame-options (constantly nil ) :deny )]
4242 (is (nil? (handler (request :get " /" ))))))))
4343
44+ (deftest test-wrap-frame-options-cps
45+ (testing " deny"
46+ (let [handler (-> (fn [_ respond _] (respond (response " hello" )))
47+ (wrap-frame-options :deny ))
48+ resp (promise )
49+ ex (promise )]
50+ (handler (request :get " /" ) resp ex)
51+ (is (not (realized? ex)))
52+ (is (= (:headers @resp) {" X-Frame-Options" " DENY" }))))
53+
54+ (testing " nil response"
55+ (let [handler (-> (fn [_ respond _] (respond nil ))
56+ (wrap-frame-options :deny ))
57+ resp (promise )
58+ ex (promise )]
59+ (handler (request :get " /" ) resp ex)
60+ (is (not (realized? ex)))
61+ (is (nil? @resp)))))
62+
4463(deftest test-wrap-content-type-options
4564 (let [handle-hello (constantly
4665 (-> (response " hello" )
You can’t perform that action at this time.
0 commit comments