40 boolean permissionsPolicy,
boolean hsts,
boolean noStore, String contentSecurityPolicy,
41 Map<String, String> customHeaders) {
44 customHeaders = customHeaders ==
null ? Map.of() : Map.copyOf(customHeaders);
49 "default-src 'self'; frame-ancestors 'none'; base-uri 'self'", Map.of());
52 public Map<String, String>
headers() {
53 final var
headers =
new LinkedHashMap<String, String>();
54 if (contentTypeOptions) {
55 headers.put(
"X-Content-Type-Options",
"nosniff");
58 headers.put(
"X-Frame-Options",
"DENY");
61 headers.put(
"Referrer-Policy",
"no-referrer");
63 if (permissionsPolicy) {
64 headers.put(
"Permissions-Policy",
"geolocation=(), microphone=(), camera=()");
67 headers.put(
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains");
70 headers.put(
"Cache-Control",
"no-store");
72 if (contentSecurityPolicy !=
null && !contentSecurityPolicy.isBlank()) {
73 headers.put(
"Content-Security-Policy", contentSecurityPolicy);