Closed vvakame closed 4 years ago
結論:netcontextとcontext周りで死ぬ
あとライブラリのビルドタグで死んだパターンも聞いた
WARNING WriteHeader called multiple times on request.
を放置しているといつの間にか挙動が変わっていた。
存在しないページではAngularにNotFound画面を出させつつ、検索エンジンのクローラのためにHTTPステータスコードを404を返そうとして↓みたいなコード書いていたら、 api_version: go1
のままだとレスポンスボディにindex.htmlが入らなくなった。
ucon.HandleFunc("GET", "/", func(w http.ResponseWriter, r *http.Request, c context.Context) {
/** 中略 */
if isAllowedPath(r.URL.Path) == false {
w.WriteHeader(404) // SEOのため許容していないパスへのリクエストは404にする
}
http.ServeFile(w, r, "dist/index.html") // Angularのindex.html返す。※この中でもw.WriteHeader()は呼ばれている
})
api_version: go1.6
でデプロイしなおしたら従来の動作(レスポンスのステータスコードが404になりつつindex.htmlも落ちてくる)に戻った。
みんな好きに書いてね!