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,16 @@ class ServerHeadersDsl {
198
200
this .crossOriginResourcePolicy = ServerCrossOriginResourcePolicyDsl ().apply (crossOriginResourcePolicyConfig).get()
199
201
}
200
202
203
+ /* *
204
+ * Configures custom headers writer
205
+ *
206
+ * @since 6.5
207
+ * @param writer the [ServerHttpHeadersWriter] to provide custom headers writer
208
+ */
209
+ fun writer (writer : ServerHttpHeadersWriter ) {
210
+ this .writers.add(writer)
211
+ }
212
+
201
213
/* *
202
214
* Disables HTTP response headers.
203
215
*/
@@ -244,6 +256,9 @@ class ServerHeadersDsl {
244
256
crossOriginResourcePolicy?.also {
245
257
headers.crossOriginResourcePolicy(crossOriginResourcePolicy)
246
258
}
259
+ writers.also {
260
+ writers.forEach { writer -> headers.writer(writer) }
261
+ }
247
262
if (disabled) {
248
263
headers.disable()
249
264
}
0 commit comments