Skip to content

Security headers

middleware.SecureHeaders sets security headers on every response. Add it as app middleware. The zero options are the defaults for a JSON API.

func secureHeaders() dygo.Option {
return dygo.WithMiddleware(
middleware.SecureHeaders(middleware.SecureHeadersOptions{}), // API defaults
)
}
func secureHeadersForHTML() dygo.Option {
return dygo.WithMiddleware(middleware.SecureHeaders(middleware.SecureHeadersOptions{
ContentSecurityPolicy: "default-src 'self'",
ReferrerPolicy: "strict-origin-when-cross-origin",
}))
}
Header Default
Content-Security-Policy default-src 'none'; frame-ancestors 'none'
Strict-Transport-Security max-age=15552000; includeSubDomains (180 days), only over HTTPS or with X-Forwarded-Proto: https
Referrer-Policy no-referrer
X-Content-Type-Options nosniff
X-Frame-Options DENY
Cross-Origin-Opener-Policy same-origin
Cross-Origin-Resource-Policy same-origin
X-DNS-Prefetch-Control off

Set ContentSecurityPolicy for routes that serve HTML, or "-" to send none. A negative HSTSMaxAge turns HSTS off.