リバースプロキシを使うことが多いだろうから, net/httpで書いたサーバがそのまま外に出る事は少ないと思うけど.
App Engineがね.(設定とかでいい感じにしてくれるんですかね?)
書いたコード
こんな感じでラッパーを作って.
/* * HTTPヘッダを送出するようにハンドラをラップする */ func secureHeader(fn http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { // XSS対応してね w.Header().Set("X-XSS-Protection", "1; mode=block") // frameを制限してね w.Header().Set("X-Frame-Options", "SAMEORIGIN") // Content-Typeを使ってね w.Header().Set("X-Content-Type-Options", "nosniff") // HTTPS使ってね w.Header().Set("Strict-Transport-Security", "max-age=15768000") // オリジナルのハンドラを呼び出し fn(w, r) } }
こんな感じに呼び出した.
http.HandleFunc("/some", secureHeader(someHandler))