The plus sign in the value of your query parameter is actually an URL-encoded ASCII space. If you want to obtain "test+test" in the backend, you should percent-encode the plus sign in the value of the URL's query param: test%2Btest.
Some minimal server code to fix ideas:
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", handle) if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) } } func handle(w http.ResponseWriter, r *http.Request) { data := r.URL.Query().Get("data") w.Header().Set("Content-type", "text/plain") fmt.Fprint(w, data) }
Results:
http://localhost:8080/?data=test+test prints test test, whereas http://localhost:8080/?data=test%2Btest prints test+test.
"test+test"in the backend, you should percent-encode the plus sign in the value of the URL's query param:test%2Btest.