|
13 | 13 | (str "ALLOW-FROM " (:allow-from frame-options)) |
14 | 14 | (str/upper-case (name frame-options)))) |
15 | 15 |
|
16 | | -(defn- add-header [response header value] |
17 | | - (some-> response (resp/header header value))) |
| 16 | +(defn- wrap-x-header [handler header-name header-value] |
| 17 | + (fn |
| 18 | + ([request] |
| 19 | + (some-> (handler request) (resp/header header-name header-value))) |
| 20 | + ([request respond raise] |
| 21 | + (handler request #(respond (some-> % (resp/header header-name header-value))) raise)))) |
18 | 22 |
|
19 | 23 | (defn frame-options-response |
20 | 24 | "Add the X-Frame-Options header to the response. See: wrap-frame-options." |
21 | 25 | [response frame-options] |
22 | | - (add-header response "X-Frame-Options" (format-frame-options frame-options))) |
| 26 | + (some-> response (resp/header "X-Frame-Options" (format-frame-options frame-options)))) |
23 | 27 |
|
24 | 28 | (defn wrap-frame-options |
25 | 29 | "Middleware that adds the X-Frame-Options header to the response. This governs |
|
41 | 45 | {:pre [(or (= frame-options :deny) |
42 | 46 | (= frame-options :sameorigin) |
43 | 47 | (allow-from? frame-options))]} |
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))))) |
| 48 | + (wrap-x-header handler "X-Frame-Options" (format-frame-options frame-options))) |
| 49 | + |
| 50 | +(defn content-type-options-response |
| 51 | + "Add the X-Content-Type-Options header to the response. |
| 52 | + See: wrap-content-type-options." |
| 53 | + [response content-type-options] |
| 54 | + (some-> response (resp/header "X-Content-Type-Options" (name content-type-options)))) |
51 | 55 |
|
52 | 56 | (defn wrap-content-type-options |
53 | 57 | "Middleware that adds the X-Content-Type-Options header to the response. This |
|
60 | 64 | http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx" |
61 | 65 | [handler content-type-options] |
62 | 66 | {:pre [(= content-type-options :nosniff)]} |
63 | | - (fn [request] |
64 | | - (if-let [response (handler request)] |
65 | | - (resp/header response "X-Content-Type-Options" (name content-type-options))))) |
| 67 | + (wrap-x-header handler "X-Content-Type-Options" (name content-type-options))) |
66 | 68 |
|
67 | 69 | (defn wrap-xss-protection |
68 | 70 | "Middleware that adds the X-XSS-Protection header to the response. This header |
|
0 commit comments