Мы пытаемся отправить форму HTML в формате JSON в код GO. Мы уже достигли этого, но теперь мы сбиты с толку, потому что мы не можем заставить браузер перенаправить на соответствующую веб-страницу. Инструкция перенаправления отлично работает, отправляя JSON непосредственно в Insomnia (она возвращает состояние успеха и отображает новую страницу), но не в браузере. Возможно, нам не хватает некоторого кода, но мы не можем найти то, что нам не хватает. Пожалуйста, помогите.
Код javascript, который отправляет json:
jQuery(document).on('submit', '#login', function(event){
event.preventDefault();
jQuery.ajax({
url: '/login/',
type: 'POST',
dataType: 'json',
data: JSON.stringify($(this).serializeFormJSON())
})
.done(function(response){
location.href = 'response';
})
.fail(function(resp){
console.log("resp");
})
.always(function(){
console.log("complete");
})
});
Код Go, который проверяет эту форму:
func POSTLoginHandler(w http.ResponseWriter, r *http.Request) {
var user users.User
err := json.NewDecoder(r.Body).Decode(&user)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
} else {
validCredentials, err := users.ValidarCredenciales(user)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else if validCredentials {
err = cookies.GenerarCookie(w, r, user.Email)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else {
http.Redirect(w, r, "/dashboard/", http.StatusSeeOther)
}
} else {
http.Redirect(w, r, "/forbidden/", http.StatusSeeOther)
}
}
}
func GetDashboardUser(w http.ResponseWriter, r *http.Request) {
exists, err := cookies.VerifyCookie(r)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
} else if exists {
http.ServeFile(w, r, "static/template.html")
} else {
http.Redirect(w, r, "/", http.StatusSeeOther)
}
}