Skip to content

Commit 2327802

Browse files
author
Andrii Bobrov
committed
Add cors handling
1 parent fffb16d commit 2327802

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

src/main/java/com/anderb/gcp/functions/HealthHttp.java

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,33 @@
77

88
import java.io.PrintWriter;
99
import java.net.HttpURLConnection;
10+
import java.util.Objects;
11+
import java.util.Optional;
1012

1113
public class HealthHttp implements HttpFunction {
12-
@Override
13-
public void service(HttpRequest request, HttpResponse response) throws Exception {
14-
PrintWriter writer = new PrintWriter(response.getWriter());
15-
response.setStatusCode(HttpURLConnection.HTTP_OK);
16-
response.setContentType("application/json; charset=UTF-8");
17-
writer.write("{\"status\": \"UP\"}");
18-
}
14+
@Override
15+
public void service(HttpRequest request, HttpResponse response) throws Exception {
16+
PrintWriter writer = new PrintWriter(response.getWriter());
17+
response.setContentType("application/json; charset=UTF-8");
18+
response.setStatusCode(HttpURLConnection.HTTP_OK);
19+
handleCORS(request, response);
20+
writer.write("{\"status\": \"UP\"}");
21+
}
22+
23+
private void handleCORS(HttpRequest request, HttpResponse response) {
24+
Optional.ofNullable(request.getHeaders().get("Origin"))
25+
.map(list -> list.get(0))
26+
.filter(HealthHttp::isWhitelisted)
27+
.ifPresent(originValue -> {
28+
response.appendHeader("Access-Control-Allow-Origin", originValue);
29+
response.appendHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
30+
});
31+
}
32+
33+
private static boolean isWhitelisted(String source) {
34+
Objects.requireNonNull(source);
35+
return source.equals("https://somesite.com") || source.equals("https://mail.google.com");
36+
}
1937
}
2038

21-
// [END functions_health_get]
39+
// [END functions_health_get]

0 commit comments

Comments
 (0)