@@ -24,8 +24,12 @@ func newResponseWriterWrapperFor(delegate http.ResponseWriter, beforeFirstWrite
24
24
header : http.Header {},
25
25
}
26
26
for key , values := range delegate .Header () {
27
- for _ , value := range values {
28
- wrapper .header .Add (key , value )
27
+ for i , value := range values {
28
+ if i == 0 {
29
+ wrapper .header .Set (key , value )
30
+ } else {
31
+ wrapper .header .Add (key , value )
32
+ }
29
33
}
30
34
}
31
35
return wrapper
@@ -79,7 +83,9 @@ func (instance *responseWriterWrapper) Write(content []byte) (int, error) {
79
83
}
80
84
81
85
if instance .buffer == nil {
82
- instance .writeHeadersToDelegate (200 )
86
+ if err := instance .writeHeadersToDelegate (200 ); err != nil {
87
+ return 0 , err
88
+ }
83
89
return instance .delegate .Write (content )
84
90
}
85
91
@@ -140,13 +146,17 @@ func (instance *responseWriterWrapper) writeToDelegateAndEncodeIfRequired(conten
140
146
141
147
func (instance * responseWriterWrapper ) writeHeadersToDelegate (defStatus int ) error {
142
148
if instance .headerSetAtDelegate {
143
- return errors .New ("Headers already set at response. " )
149
+ return errors .New ("headers already set at response" )
144
150
}
145
151
instance .headerSetAtDelegate = true
146
152
w := instance .delegate
147
153
for key , values := range instance .header {
148
- for _ , value := range values {
149
- w .Header ().Add (key , value )
154
+ for i , value := range values {
155
+ if i == 0 {
156
+ w .Header ().Set (key , value )
157
+ } else {
158
+ w .Header ().Add (key , value )
159
+ }
150
160
}
151
161
}
152
162
w .WriteHeader (instance .selectStatus (defStatus ))
0 commit comments