@@ -69,27 +69,23 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
6969 String path = request .getRequestURI ();
7070 String contextPath = request .getContextPath ();
7171
72+ // Set CORS headers and handle OPTIONS request only if origin is valid and allowed
7273 if (origin != null && isOriginAllowed (origin )) {
73- response .setHeader ("Access-Control-Allow-Origin" , origin ); // Never use wildcard
74- response .setHeader ("Access-Control-Allow-Methods" , "GET, POST, PUT, PATCH, DELETE, OPTIONS" );
75- response .setHeader ("Access-Control-Allow-Headers" ,
76- "Authorization, Content-Type, Accept, Jwttoken, serverAuthorization, ServerAuthorization, serverauthorization, Serverauthorization" );
77- response .setHeader ("Access-Control-Allow-Credentials" , "true" );
78- response .setHeader ("Access-Control-Max-Age" , "3600" );
74+ addCorsHeaders (response , origin );
7975 logger .info ("Origin Validated | Origin: {} | Method: {} | URI: {}" , origin , method , uri );
76+
77+ if ("OPTIONS" .equalsIgnoreCase (method )) {
78+ // OPTIONS (preflight) - respond with full allowed methods
79+ response .setStatus (HttpServletResponse .SC_OK );
80+ return ;
81+ }
8082 } else {
8183 logger .warn ("Origin [{}] is NOT allowed. CORS headers NOT added." , origin );
82- }
83-
84- if ("OPTIONS" .equalsIgnoreCase (method )) {
85- // OPTIONS (preflight) - respond with full allowed methods
86- response .setHeader ("Access-Control-Allow-Origin" , origin );
87- response .setHeader ("Access-Control-Allow-Methods" , "GET, POST, PUT, PATCH, DELETE, OPTIONS" );
88- response .setHeader ("Access-Control-Allow-Headers" ,
89- "Authorization, Content-Type, Accept, Jwttoken, serverAuthorization, ServerAuthorization, serverauthorization, Serverauthorization" );
90- response .setHeader ("Access-Control-Allow-Credentials" , "true" );
91- response .setStatus (HttpServletResponse .SC_OK );
92- return ;
84+
85+ if ("OPTIONS" .equalsIgnoreCase (method )) {
86+ response .sendError (HttpServletResponse .SC_FORBIDDEN , "Origin not allowed for OPTIONS request" );
87+ return ;
88+ }
9389 }
9490
9591 logger .info ("JwtUserIdValidationFilter invoked for path: " + path );
@@ -169,6 +165,15 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo
169165 }
170166 }
171167
168+ private void addCorsHeaders (HttpServletResponse response , String origin ) {
169+ response .setHeader ("Access-Control-Allow-Origin" , origin ); // Never use wildcard
170+ response .setHeader ("Access-Control-Allow-Methods" , "GET, POST, PUT, PATCH, DELETE, OPTIONS" );
171+ response .setHeader ("Access-Control-Allow-Headers" ,
172+ "Authorization, Content-Type, Accept, Jwttoken, serverAuthorization, ServerAuthorization, serverauthorization, Serverauthorization" );
173+ response .setHeader ("Access-Control-Allow-Credentials" , "true" );
174+ response .setHeader ("Access-Control-Max-Age" , "3600" );
175+ }
176+
172177 private boolean isOriginAllowed (String origin ) {
173178 if (origin == null || allowedOrigins == null || allowedOrigins .trim ().isEmpty ()) {
174179 logger .warn ("No allowed origins configured or origin is null" );
@@ -185,9 +190,7 @@ private boolean isOriginAllowed(String origin) {
185190 boolean matched = origin .matches (regex );
186191 return matched ;
187192 });
188- }
189-
190- private boolean isMobileClient (String userAgent ) {
193+ } private boolean isMobileClient (String userAgent ) {
191194 if (userAgent == null )
192195 return false ;
193196 userAgent = userAgent .toLowerCase ();
0 commit comments