diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 6dae373..ccf218a 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -15,7 +15,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 6441a40..3c17fda 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,6 +5,9 @@ + + - + diff --git a/MoviesWebApp/pom.xml b/MoviesWebApp/pom.xml index a8b2a4e..be015c1 100644 --- a/MoviesWebApp/pom.xml +++ b/MoviesWebApp/pom.xml @@ -103,8 +103,8 @@ org.apache.maven.plugins maven-compiler-plugin - 9 - 9 + 10 + 10 diff --git a/MoviesWebApp/src/main/java/at/technikumwien/movies/ResponseFilter.java b/MoviesWebApp/src/main/java/at/technikumwien/movies/ResponseFilter.java new file mode 100644 index 0000000..7da5945 --- /dev/null +++ b/MoviesWebApp/src/main/java/at/technikumwien/movies/ResponseFilter.java @@ -0,0 +1,37 @@ +package at.technikumwien.movies; + +import java.io.IOException; + +import javax.ws.rs.container.ContainerRequestContext; +import javax.ws.rs.container.ContainerResponseContext; +import javax.ws.rs.container.ContainerResponseFilter; +import javax.ws.rs.core.CacheControl; +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.ext.Provider; + +@Provider +public class ResponseFilter implements ContainerResponseFilter { + @Override + public void filter(ContainerRequestContext request, ContainerResponseContext response) throws IOException { + var requestHeaders = request.getHeaders(); + var responseHeaders = response.getHeaders(); + + responseHeaders.add("Access-Control-Allow-Origin", getRequestOrigin(requestHeaders)); + responseHeaders.add("Access-Control-Allow-Methods", "GET, DELETE, OPTIONS, POST, PUT"); + responseHeaders.add("Access-Control-Allow-Headers", getRequestHeaders(requestHeaders)); + + var cacheControl = new CacheControl(); + cacheControl.setNoCache(true); + responseHeaders.add("Cache-Control", cacheControl); + } + + private String getRequestOrigin(MultivaluedMap requestHeaders) { + var origin = requestHeaders.getFirst("Origin"); + return (origin != null ? origin : "null"); + } + + private String getRequestHeaders(MultivaluedMap requestHeaders) { + var headers = requestHeaders.get("Access-Control-Request-Headers"); + return (headers != null ? String.join(", ", headers) : ""); + } +} \ No newline at end of file