mirror of https://github.com/gorilla/websocket.git
Handle query strings properly when parsing url
This commit is contained in:
parent
844dd6d40e
commit
191e6c2bbf
10
client.go
10
client.go
|
@ -95,12 +95,20 @@ func parseURL(s string) (*url.URL, error) {
|
|||
return nil, errMalformedURL
|
||||
}
|
||||
|
||||
u.Host = s
|
||||
if i := strings.Index(s, "?"); i >= 0 {
|
||||
u.Host, u.RawQuery = s[:i], s[i+1:]
|
||||
} else {
|
||||
u.Host = s
|
||||
}
|
||||
|
||||
u.Opaque = "/"
|
||||
if i := strings.Index(s, "/"); i >= 0 {
|
||||
u.Host = s[:i]
|
||||
u.Opaque = s[i:]
|
||||
}
|
||||
if i := strings.Index(u.Opaque, "?"); i >= 0 {
|
||||
u.Opaque = u.Opaque[:i]
|
||||
}
|
||||
|
||||
if strings.Contains(u.Host, "@") {
|
||||
// Don't bother parsing user information because user information is
|
||||
|
|
|
@ -21,6 +21,8 @@ var parseURLTests = []struct {
|
|||
{"wss://example.com/a/b", &url.URL{Scheme: "wss", Host: "example.com", Opaque: "/a/b"}},
|
||||
{"ss://example.com/a/b", nil},
|
||||
{"ws://webmaster@example.com/", nil},
|
||||
{"ws://example.com/a/b?param1=a¶m2=b", &url.URL{Scheme: "ws", Host: "example.com", Opaque: "/a/b", RawQuery: "param1=a¶m2=b"}},
|
||||
{"ws://example.com:7777?param1=a¶m2=b", &url.URL{Scheme: "ws", Host: "example.com:7777", Opaque: "/", RawQuery: "param1=a¶m2=b"}},
|
||||
}
|
||||
|
||||
func TestParseURL(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue