@@ -148,3 +148,41 @@ func TestCorsInfoPreflightCors(t *testing.T) {
148
148
t .Error ("OriginUrl must be set" )
149
149
}
150
150
}
151
+
152
+ func TestCorsInfoEmptyAccessControlRequestHeaders (t * testing.T ) {
153
+ req := defaultRequest ("OPTIONS" , "http://localhost" , nil , t )
154
+ req .Request .Header .Set ("Origin" , "http://another.host" )
155
+
156
+ // make it a preflight request
157
+ req .Request .Header .Set ("Access-Control-Request-Method" , "PUT" )
158
+
159
+ // WebKit based browsers may send `Access-Control-Request-Headers:` with
160
+ // no value, in which case, the header will be present in requests
161
+ // Header map, but its value is an empty string.
162
+ req .Request .Header .Set ("Access-Control-Request-Headers" , "" )
163
+ corsInfo := req .GetCorsInfo ()
164
+ if corsInfo == nil {
165
+ t .Error ("Expected non nil CorsInfo" )
166
+ }
167
+ if corsInfo .IsCors == false {
168
+ t .Error ("This is a CORS request" )
169
+ }
170
+ if len (corsInfo .AccessControlRequestHeaders ) > 0 {
171
+ t .Error ("Access-Control-Request-Headers should have been removed" )
172
+ }
173
+
174
+ req .Request .Header .Set ("Access-Control-Request-Headers" , "" )
175
+ corsInfo = req .GetCorsInfo ()
176
+ if corsInfo == nil {
177
+ t .Error ("Expected non nil CorsInfo" )
178
+ }
179
+ if corsInfo .IsCors == false {
180
+ t .Error ("This is a CORS request" )
181
+ }
182
+ if corsInfo .IsPreflight == false {
183
+ t .Error ("This is a Preflight request" )
184
+ }
185
+ if len (corsInfo .AccessControlRequestHeaders ) > 0 {
186
+ t .Error ("Empty Access-Control-Request-Headers header should have been removed" )
187
+ }
188
+ }
0 commit comments