27
27
import javax .servlet .http .HttpServletRequestWrapper ;
28
28
import javax .servlet .http .HttpServletResponse ;
29
29
30
- import org .springframework .security .web .header .writers .CompositeHeaderWriter ;
31
30
import org .springframework .security .web .util .OnCommittedResponseWrapper ;
32
31
import org .springframework .util .Assert ;
33
32
import org .springframework .web .filter .OncePerRequestFilter ;
@@ -49,7 +48,7 @@ public class HeaderWriterFilter extends OncePerRequestFilter {
49
48
* The {@link HeaderWriter} to write headers to the response.
50
49
* {@see CompositeHeaderWriter}
51
50
*/
52
- private final HeaderWriter headerWriter ;
51
+ private final List < HeaderWriter > headerWriters ;
53
52
54
53
/**
55
54
* Indicates whether to write the headers at the beginning of the request.
@@ -64,7 +63,7 @@ public class HeaderWriterFilter extends OncePerRequestFilter {
64
63
*/
65
64
public HeaderWriterFilter (List <HeaderWriter > headerWriters ) {
66
65
Assert .notEmpty (headerWriters , "headerWriters cannot be null or empty" );
67
- this .headerWriter = new CompositeHeaderWriter ( headerWriters ) ;
66
+ this .headerWriters = headerWriters ;
68
67
}
69
68
70
69
@ Override
@@ -80,13 +79,13 @@ protected void doFilterInternal(HttpServletRequest request,
80
79
}
81
80
82
81
private void doHeadersBefore (HttpServletRequest request , HttpServletResponse response , FilterChain filterChain ) throws IOException , ServletException {
83
- this . headerWriter . writeHeaders (request , response );
82
+ writeHeaders (request , response );
84
83
filterChain .doFilter (request , response );
85
84
}
86
85
87
86
private void doHeadersAfter (HttpServletRequest request , HttpServletResponse response , FilterChain filterChain ) throws IOException , ServletException {
88
87
HeaderWriterResponse headerWriterResponse = new HeaderWriterResponse (request ,
89
- response , this . headerWriter );
88
+ response );
90
89
HeaderWriterRequest headerWriterRequest = new HeaderWriterRequest (request ,
91
90
headerWriterResponse );
92
91
try {
@@ -96,6 +95,12 @@ private void doHeadersAfter(HttpServletRequest request, HttpServletResponse resp
96
95
}
97
96
}
98
97
98
+ void writeHeaders (HttpServletRequest request , HttpServletResponse response ) {
99
+ for (HeaderWriter writer : this .headerWriters ) {
100
+ writer .writeHeaders (request , response );
101
+ }
102
+ }
103
+
99
104
/**
100
105
* Allow writing headers at the beginning of the request.
101
106
*
@@ -107,15 +112,12 @@ public void setShouldWriteHeadersEagerly(boolean shouldWriteHeadersEagerly) {
107
112
this .shouldWriteHeadersEagerly = shouldWriteHeadersEagerly ;
108
113
}
109
114
110
- static class HeaderWriterResponse extends OnCommittedResponseWrapper {
115
+ class HeaderWriterResponse extends OnCommittedResponseWrapper {
111
116
private final HttpServletRequest request ;
112
- private final HeaderWriter headerWriter ;
113
117
114
- HeaderWriterResponse (HttpServletRequest request , HttpServletResponse response ,
115
- HeaderWriter headerWriter ) {
118
+ HeaderWriterResponse (HttpServletRequest request , HttpServletResponse response ) {
116
119
super (response );
117
120
this .request = request ;
118
- this .headerWriter = headerWriter ;
119
121
}
120
122
121
123
/*
@@ -134,7 +136,7 @@ protected void writeHeaders() {
134
136
if (isDisableOnResponseCommitted ()) {
135
137
return ;
136
138
}
137
- this . headerWriter .writeHeaders (this .request , getHttpResponse ());
139
+ HeaderWriterFilter . this .writeHeaders (this .request , getHttpResponse ());
138
140
}
139
141
140
142
private HttpServletResponse getHttpResponse () {
0 commit comments