Функция http.Redirect
Функция http.Redirect выполняет перенаправление клиента на новый URL-адрес.
Она отправляет HTTP-ответ с указанным кодом статуса и заголовком Location,
содержащим новый адрес. Первым параметром функция принимает
http.ResponseWriter для записи ответа, вторым - указатель на
http.Request для получения информации о текущем запросе,
третьим - строку с URL-адресом для перенаправления,
и четвертым - целочисленный код статуса HTTP-редиректа.
Синтаксис
http.Redirect(w http.ResponseWriter, r *http.Request, url string, code int)
Пример
Давайте выполним простое перенаправление с кодом 301:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/old", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "/new", http.StatusMovedPermanently)
})
http.HandleFunc("/new", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "New page")
})
http.ListenAndServe(":8080", nil)
}
При обращении к /old клиент будет перенаправлен на /new
с кодом 301 Moved Permanently.
Пример
Давайте выполним временное перенаправление с кодом 302:
package main
import (
"net/http"
)
func main() {
http.HandleFunc("/temp", func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "https://example.com", http.StatusFound)
})
http.ListenAndServe(":8080", nil)
}
В этом примере запрос на /temp будет перенаправлен на
внешний сайт с кодом 302 Found.
Пример
Давайте перенаправим пользователя после обработки формы:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/submit", func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
// Обработка данных формы
http.Redirect(w, r, "/success", http.StatusSeeOther)
return
}
fmt.Fprintln(w, "Submit form")
})
http.HandleFunc("/success", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Form submitted successfully")
})
http.ListenAndServe(":8080", nil)
}
При POST-запросе на /submit сервер перенаправит пользователя
на /success с кодом 303 See Other.
Смотрите также
-
функцию
http.Error,
которая отправляет HTTP-ошибку с указанным статусом -
функцию
http.ServeFile,
которая отдает файл как HTTP-ответ -
функцию
http.NotFound,
которая отправляет HTTP-ответ с кодом 404 -
структуру
http.ServeMux,
которая используется для маршрутизации HTTP-запросов