2017-12-04 14 views
0

私は、ヘッダ( 'Location:http://somewhere.com')を使ってリダイレクトしてもdie()/ exit()しないと、ヘッダ関数の後のコードが常に実行され、表示されます。私は、Goでhttp.Redirect(w、r、 "/ somewhere"、302)を使用するときに同じことが起こるかどうかを知りたいと思います。そしてもしそうなら、どうしたらそれを避けることができますか?httpリダイレクトを安全に行う

答えて

2

http.Redirect関数は、完全な応答を書き込みます。プログラムはhttp.Redirectの呼び出しの後も実行を続けます。 http.Redirectへの呼び出しが関数の最後の行でない場合、アプリケーションは呼び出しの直後にハンドラから戻ってくるのが一般的です。

func serveFoo(w http.ResponseWriter, r *http.Request) { 
    ... 
     http.Redirect(w, r, "/somewhere", 302) 
     return 
    ... 

} 
関連する問題