fix possible URI encoding issues

Encode query parameters for the Location URL.
This commit is contained in:
Chris Camel 2020-06-02 11:36:33 +02:00
parent 5f9a9ea9a7
commit f3a62cd876
No known key found for this signature in database
GPG Key ID: 125EFEF60AEF6949
1 changed files with 13 additions and 6 deletions

View File

@ -25,6 +25,7 @@ import (
"net"
"net/http"
"net/smtp"
"net/url"
"strings"
log "github.com/sirupsen/logrus"
@ -258,14 +259,20 @@ func SendMail(httpResp http.ResponseWriter, httpReq *http.Request) {
contactResponse.Message = "Invalid request, please review your input and try again."
}
refererURL := strings.Split(httpReq.Header["Referer"][0], "?")[0]
refererURL, err := url.Parse(httpReq.Header.Get("Referer"))
if err != nil {
log.Infof("error: %s", err.Error())
refererURL = &url.URL{} // continue with default (empty) url
}
q := refererURL.Query()
q.Set("status", contactResponse.Status)
q.Set("message", contactResponse.Message)
refererURL.RawQuery = q.Encode()
respRawData, _ := json.Marshal(contactResponse)
httpResp.Header().Set("Location",
fmt.Sprintf("%s?status=%s&message=%s",
refererURL,
contactResponse.Status,
contactResponse.Message))
httpResp.Header().Set("Location", refererURL.String())
httpResp.WriteHeader(http.StatusSeeOther)
httpResp.Header().Set("Content-Type", "application/json; charset=UTF-8")
httpResp.Write(respRawData)