Skip to content
Snippets Groups Projects
Commit 94d55a5c authored by Rostislav Dublin (EPAM)'s avatar Rostislav Dublin (EPAM)
Browse files

Merge branch 'cors-headers-fix' into 'master'

Fix filter for CORS preflight request(GONRG-2138)

See merge request !105
parents 2357e0f0 e1b73d8c
No related branches found
No related tags found
1 merge request!105Fix filter for CORS preflight request(GONRG-2138)
Pipeline #35403 failed
...@@ -58,9 +58,9 @@ public class LegalFilter implements Filter { ...@@ -58,9 +58,9 @@ public class LegalFilter implements Filter {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
setResponseHeaders(httpServletResponse); setResponseHeaders(httpServletResponse);
try { try {
if (!validateIsHttps(httpServletResponse)) { if (!validateIsHttps(httpServletResponse,httpServletRequest)) {
//do nothing //do nothing
} else if (httpServletRequest.getMethod().equalsIgnoreCase("OPTIONS")) { } else if (isOptionsMethod(httpServletRequest)) {
httpServletResponse.setStatus(200); httpServletResponse.setStatus(200);
} else { } else {
chain.doFilter(request, response); chain.doFilter(request, response);
...@@ -75,9 +75,9 @@ public class LegalFilter implements Filter { ...@@ -75,9 +75,9 @@ public class LegalFilter implements Filter {
public void destroy() { public void destroy() {
} }
private boolean validateIsHttps( HttpServletResponse httpServletResponse) { private boolean validateIsHttps( HttpServletResponse httpServletResponse, HttpServletRequest httpServletRequest) {
String uri = requestInfo.getUri(); String uri = requestInfo.getUri();
if(!isLocalHost(uri) && !isCronJob(uri) && !isSwagger(uri) && !isHealthCheck(uri)) { if(!isLocalHost(uri) && !isCronJob(uri) && !isSwagger(uri) && !isHealthCheck(uri) && !isOptionsMethod(httpServletRequest)) {
if(!hasJwt()) { if(!hasJwt()) {
httpServletResponse.setStatus(401); httpServletResponse.setStatus(401);
return false; return false;
...@@ -111,6 +111,11 @@ public class LegalFilter implements Filter { ...@@ -111,6 +111,11 @@ public class LegalFilter implements Filter {
private boolean isSwagger(String uri) { private boolean isSwagger(String uri) {
return uri.contains("/swagger") || uri.contains("/v2/api-docs") || uri.contains("/configuration/ui") || uri.contains("/webjars/"); return uri.contains("/swagger") || uri.contains("/v2/api-docs") || uri.contains("/configuration/ui") || uri.contains("/webjars/");
} }
private boolean isOptionsMethod(HttpServletRequest httpServletRequest){
return httpServletRequest.getMethod().equalsIgnoreCase("OPTIONS");
}
private void logRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse, long startTime) { private void logRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse, long startTime) {
String uri = requestInfo.getUri(); String uri = requestInfo.getUri();
if(!isHealthCheck(uri)) { if(!isHealthCheck(uri)) {
......
...@@ -49,7 +49,7 @@ public class LegalFilterTest { ...@@ -49,7 +49,7 @@ public class LegalFilterTest {
legalFilter.doFilter(httpServletRequest, httpServletResponse, filterChain); legalFilter.doFilter(httpServletRequest, httpServletResponse, filterChain);
Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Origin", "custom-domain"); Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Origin", "custom-domain");
Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Headers", "origin, content-type, accept, authorization, data-partition-id, correlation-id, appkey"); Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Headers", "access-control-allow-origin, origin, content-type, accept, authorization, data-partition-id, correlation-id, appkey");
Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH"); Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH");
Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Credentials", "true"); Mockito.verify(httpServletResponse).addHeader("Access-Control-Allow-Credentials", "true");
Mockito.verify(httpServletResponse).addHeader("X-Frame-Options", "DENY"); Mockito.verify(httpServletResponse).addHeader("X-Frame-Options", "DENY");
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.8</maven.compiler.source>
<docker.image.prefix>opendes</docker.image.prefix> <docker.image.prefix>opendes</docker.image.prefix>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<os-core-common.version>0.6.9</os-core-common.version> <os-core-common.version>0.8.1-SNAPSHOT</os-core-common.version>
<snakeyaml.version>1.26</snakeyaml.version> <snakeyaml.version>1.26</snakeyaml.version>
<spring-web.version>5.1.19.RELEASE</spring-web.version> <spring-web.version>5.1.19.RELEASE</spring-web.version>
</properties> </properties>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment