File tree Expand file tree Collapse file tree 4 files changed +34
-2
lines changed
main/java/org/springframework/web/reactive/function/server
test/java/org/springframework/web/reactive/function/server
main/java/org/springframework/web/servlet/function
test/java/org/springframework/web/servlet/function Expand file tree Collapse file tree 4 files changed +34
-2
lines changed Original file line number Diff line number Diff line change @@ -550,7 +550,12 @@ public HeadersPredicate(Predicate<ServerRequest.Headers> headersPredicate) {
550
550
551
551
@ Override
552
552
public boolean test (ServerRequest request ) {
553
- return this .headersPredicate .test (request .headers ());
553
+ if (CorsUtils .isPreFlightRequest (request .exchange ().getRequest ())) {
554
+ return true ;
555
+ }
556
+ else {
557
+ return this .headersPredicate .test (request .headers ());
558
+ }
554
559
}
555
560
556
561
@ Override
Original file line number Diff line number Diff line change @@ -198,6 +198,18 @@ public void headers() {
198
198
assertThat (predicate .test (request )).isFalse ();
199
199
}
200
200
201
+ @ Test
202
+ public void headersCors () {
203
+ RequestPredicate predicate = RequestPredicates .headers (headers -> false );
204
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .options ("https://example.com" )
205
+ .header ("Origin" , "https://example.com" )
206
+ .header (HttpHeaders .ACCESS_CONTROL_REQUEST_METHOD , "PUT" )
207
+ .build ();
208
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
209
+ assertThat (predicate .test (request )).isTrue ();
210
+ }
211
+
212
+
201
213
@ Test
202
214
public void contentType () {
203
215
MediaType json = MediaType .APPLICATION_JSON ;
Original file line number Diff line number Diff line change @@ -543,7 +543,12 @@ public HeadersPredicate(Predicate<ServerRequest.Headers> headersPredicate) {
543
543
544
544
@ Override
545
545
public boolean test (ServerRequest request ) {
546
- return this .headersPredicate .test (request .headers ());
546
+ if (CorsUtils .isPreFlightRequest (request .servletRequest ())) {
547
+ return true ;
548
+ }
549
+ else {
550
+ return this .headersPredicate .test (request .headers ());
551
+ }
547
552
}
548
553
549
554
@ Override
Original file line number Diff line number Diff line change @@ -197,6 +197,16 @@ public void headers() {
197
197
assertThat (predicate .test (request )).isFalse ();
198
198
}
199
199
200
+ @ Test
201
+ public void headersCors () {
202
+ RequestPredicate predicate = RequestPredicates .headers (headers -> false );
203
+ MockHttpServletRequest servletRequest = new MockHttpServletRequest ("OPTIONS" , "https://example.com" );
204
+ servletRequest .addHeader ("Origin" , "https://example.com" );
205
+ servletRequest .addHeader (HttpHeaders .ACCESS_CONTROL_REQUEST_METHOD , "PUT" );
206
+ ServerRequest request = new DefaultServerRequest (servletRequest , emptyList ());
207
+ assertThat (predicate .test (request )).isTrue ();
208
+ }
209
+
200
210
@ Test
201
211
public void contentType () {
202
212
MediaType json = MediaType .APPLICATION_JSON ;
You can’t perform that action at this time.
0 commit comments