@@ -138,7 +138,12 @@ public CorsConfiguration(CorsConfiguration other) {
138
138
* {@code @CrossOrigin}, via {@link #applyPermitDefaultValues()}.
139
139
*/
140
140
public void setAllowedOrigins (@ Nullable List <String > allowedOrigins ) {
141
- this .allowedOrigins = (allowedOrigins != null ? new ArrayList <>(allowedOrigins ) : null );
141
+ this .allowedOrigins = (allowedOrigins != null ?
142
+ allowedOrigins .stream ().map (this ::trimTrailingSlash ).collect (Collectors .toList ()) : null );
143
+ }
144
+
145
+ private String trimTrailingSlash (String origin ) {
146
+ return origin .endsWith ("/" ) ? origin .substring (0 , origin .length () - 1 ) : origin ;
142
147
}
143
148
144
149
/**
@@ -159,6 +164,7 @@ public void addAllowedOrigin(String origin) {
159
164
else if (this .allowedOrigins == DEFAULT_PERMIT_ALL && CollectionUtils .isEmpty (this .allowedOriginPatterns )) {
160
165
setAllowedOrigins (DEFAULT_PERMIT_ALL );
161
166
}
167
+ origin = trimTrailingSlash (origin );
162
168
this .allowedOrigins .add (origin );
163
169
}
164
170
@@ -209,6 +215,7 @@ public void addAllowedOriginPattern(String originPattern) {
209
215
if (this .allowedOriginPatterns == null ) {
210
216
this .allowedOriginPatterns = new ArrayList <>(4 );
211
217
}
218
+ originPattern = trimTrailingSlash (originPattern );
212
219
this .allowedOriginPatterns .add (new OriginPattern (originPattern ));
213
220
if (this .allowedOrigins == DEFAULT_PERMIT_ALL ) {
214
221
this .allowedOrigins = null ;
@@ -551,9 +558,7 @@ public String checkOrigin(@Nullable String requestOrigin) {
551
558
if (!StringUtils .hasText (requestOrigin )) {
552
559
return null ;
553
560
}
554
- if (requestOrigin .endsWith ("/" )) {
555
- requestOrigin = requestOrigin .substring (0 , requestOrigin .length () - 1 );
556
- }
561
+ requestOrigin = trimTrailingSlash (requestOrigin );
557
562
if (!ObjectUtils .isEmpty (this .allowedOrigins )) {
558
563
if (this .allowedOrigins .contains (ALL )) {
559
564
validateAllowCredentials ();
0 commit comments