I have a login page (login.html) that uses Javascript to call a golang service on the back end. Upon successful login, the user should be taken to a dashboard page (dashboard.html). Instead, the dashboard page opens up in the middle of the login page as shown here:
The relevant code is:
func userhandler(w http.ResponseWriter, r *http.Request, subcommand string) {
...
// If the credentials are valid, go to the Dashboard page
if validateLoginCredentials([]byte(loginUsername), []byte(loginPassword)) != -1 {
http.Redirect(w, r, "/dashboard.html", 302) //<<<<<<<<<The Redirect is here
}
...
}
func webhandler(w http.ResponseWriter, r *http.Request) { ...
// Service the API
if strings.HasPrefix(r.URL.Path, "/xyzzy/") {
urlparts := strings.SplitN(r.URL.Path, "/", 5) ...
switch urlparts[3] {
case "user":
userhandler(w, r, urlparts[4]) ...
}
}
} else { // Serve the static pages
http.FileServer(http.Dir(".")).ServeHTTP(w, r)
}
...
}
func main {
...
http.HandleFunc("/", webhandler) ...
err_https := http.ListenAndServeTLS(":3001", "./xyzzy.crt", "./xyzzy.key", nil)
...
}
If, as a test, I put the redirect into the spot where it serves the static pages (all static pages will redirect to the dashboard page), it looks like it works. But, in the code that handles the user api functions, like login, I get this behavior.
HTML Snippet:
<body>
<div class="logintopspacer" id="logintopspacerid"></div>
<div class="loginlogo" id="loginlogoid"><img src="img/pixmover1.png" alt="PixMover" width="270"></div>
<div class="logintitlecontainer" id="logintitlecontainerid">
<div class="logintitle" id="logintitleid">User Login</div>
</div>
<div class="loginmidspacer" id="loginmidspacerid"></div>
<div class="logincredentialscontainer" id="logincredentialscontainerid">
<div class="logincredentialsspacer"></div>
<div class="logincredentialtitle">Username/Email:</div>
<div class="logincredentialentry"><input type="text" name="pixun" id="pixunid" size="25"></div>
<div class="logincredentialsspacer"></div>
<div class="logincredentialsspacer"></div>
<div class="logincredentialtitle">Password:</div>
<div class="logincredentialentry"><input type="password" name="pixpw" id="pixpwid" size="25"></div>
<div class="logincredentialsspacer"></div>
</div>
<div class="loginbuttoncontainer" id="loginbuttoncontainerid">
<div class="loginbutton" id="loginbuttonid" onmousedown="buttonPressed();" onmouseup="submitForm();" onmouseout="buttonReleased();" >Login</div>
</div>
<div class="loginerrormessage" id="loginerrormessageid"></div>
<div class="loginbottomspacer" id="loginbottomspacerid"></div>
<div class="pagefooter" id="pagefooterid">
Copyright © XYZZY, Inc. 2016
</div>
</body>
Javascript:
function submitForm()
{
document.getElementById("loginbuttonid").className = "loginbutton";
pixlogin();
}
function pixlogin()
{
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
{
document.getElementById("loginerrormessageid").innerHTML = xhttp.responseText;
}
};
xhttp.open("POST", "pixmover/1_0_0/user/login", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("username=" + document.getElementById("pixunid").value + "&password=" + document.getElementById("pixpwid").value);
}