cpp

Веб-сервер на Go. Перенаправление запроса

Перенаправить запрос на другой адрес позволяет функция Redirect() из пакета net/http. Формат функции:

http.Redirect(w http.ResponseWriter, r *http.Request,
              url string, code int)

Пример перенаправления с /c на /contact/ с кодом 301:

if r.URL.Path == "/c" {
   http.Redirect(rw, r, "/contact/", http.StatusMovedPermanently)
   return
}

Заголовки:

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Location: /contact/
Server: MyServer 1.0
Date: Fri, 06 May 2022 19:18:54 GMT
Content-Length: 44

Как видно из результата, добавляется заголовок Content-Type со значением text/html; charset=utf-8 и отправляется небольшой фрагмент HTML-кода объемом 44 байта. Если нужно запретить такое поведение, то достаточно присвоить значение nil для заголовка Content-Type:

if r.URL.Path == "/c" {
   rw.Header()["Content-Type"] = nil
   http.Redirect(rw, r, "/contact/", http.StatusMovedPermanently)
   return
}

Заголовки:

HTTP/1.1 301 Moved Permanently
Location: /contact/
Server: MyServer 1.0
Date: Fri, 06 May 2022 19:33:20 GMT
Content-Length: 0

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp