1
1
/*
2
- * Copyright 2002-2021 the original author or authors.
2
+ * Copyright 2002-2024 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
17
17
package org.springframework.security.config.web.server
18
18
19
19
import org.springframework.security.web.server.header.CacheControlServerHttpHeadersWriter
20
+ import org.springframework.security.web.server.header.ServerHttpHeadersWriter
20
21
import org.springframework.security.web.server.header.ContentTypeOptionsServerHttpHeadersWriter
21
22
import org.springframework.security.web.server.header.ReferrerPolicyServerHttpHeadersWriter
22
23
import org.springframework.security.web.server.header.StrictTransportSecurityServerHttpHeadersWriter
@@ -43,6 +44,7 @@ class ServerHeadersDsl {
43
44
private var crossOriginOpenerPolicy: ((ServerHttpSecurity .HeaderSpec .CrossOriginOpenerPolicySpec ) -> Unit )? = null
44
45
private var crossOriginEmbedderPolicy: ((ServerHttpSecurity .HeaderSpec .CrossOriginEmbedderPolicySpec ) -> Unit )? = null
45
46
private var crossOriginResourcePolicy: ((ServerHttpSecurity .HeaderSpec .CrossOriginResourcePolicySpec ) -> Unit )? = null
47
+ private var writers = mutableListOf<ServerHttpHeadersWriter >()
46
48
47
49
private var disabled = false
48
50
@@ -198,6 +200,15 @@ class ServerHeadersDsl {
198
200
this .crossOriginResourcePolicy = ServerCrossOriginResourcePolicyDsl ().apply (crossOriginResourcePolicyConfig).get()
199
201
}
200
202
203
+ /* *
204
+ * Configures custom headers writer
205
+ *
206
+ * @param writer the [ServerHttpHeadersWriter] to provide custom headers writer
207
+ */
208
+ fun writer (writer : ServerHttpHeadersWriter ) {
209
+ this .writers.add(writer)
210
+ }
211
+
201
212
/* *
202
213
* Disables HTTP response headers.
203
214
*/
@@ -244,6 +255,9 @@ class ServerHeadersDsl {
244
255
crossOriginResourcePolicy?.also {
245
256
headers.crossOriginResourcePolicy(crossOriginResourcePolicy)
246
257
}
258
+ writers.also {
259
+ writers.forEach { writer -> headers.writer(writer) }
260
+ }
247
261
if (disabled) {
248
262
headers.disable()
249
263
}
0 commit comments