使用标准foo
提取片段数据(http://domain.com/path#foo中的http.Server
)并不幸运。
package main
import (
"fmt"
"net/http"
)
type Handler struct {
}
func (handler Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Printf("Path = \"%v\" Fragment = \"%v\"\n", r.URL.Path, r.URL.Fragment)
}
func main() {
var handler Handler
http.ListenAndServe(":30000", handler)
}
为http://127.0.0.1:30000/path#foo
生成空片段:
Path = "/path" Fragment = ""
如何使用golang的内置http.Server
?
答案 0 :(得分:11)
你不能。这不是Go事物 - URL片段不会通过HTTP发送到服务器。它们只是一个浏览器概念。
以下是a relevant issue,其中the docs for http.Request
已更改为:
// For server requests the URL is parsed from the URI
// supplied on the Request-Line as stored in RequestURI. For
// most requests, fields other than Path and RawQuery will be
// empty. (See RFC 2616, Section 5.1.2)
如果由于某种原因你需要它,你可能会将一些JavaScript串在一起,将请求中的片段作为GET
参数包含在内。