Browse Source

use net/url pacakge

Xiang Li 12 years ago
parent
commit
5767b4e245
1 changed files with 10 additions and 5 deletions
  1. 10 5
      server/util.go

+ 10 - 5
server/util.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"io"
 	"net/http"
+	"net/url"
 
 	"github.com/coreos/etcd/log"
 )
@@ -19,9 +20,13 @@ func decodeJsonRequest(req *http.Request, data interface{}) error {
 }
 
 func redirect(hostname string, w http.ResponseWriter, req *http.Request) {
-	path := req.URL.Path
-	query := req.URL.RawQuery
-	url := hostname + path + "?" + query
-	log.Debugf("Redirect to %s", url)
-	http.Redirect(w, req, url, http.StatusTemporaryRedirect)
+	originalURL, _ := url.Parse(req.URL.String())
+	redirectURL, _ := url.Parse(hostname)
+
+	// we need the original path and raw query
+	redirectURL.Path = originalURL.Path
+	redirectURL.RawQuery = originalURL.RawQuery
+
+	log.Debugf("Redirect to %s", redirectURL.String())
+	http.Redirect(w, req, redirectURL.String(), http.StatusTemporaryRedirect)
 }