我正在尝试为路由器使用标准的Go http软件包。
在我的main.go中,它开始:
func main(){
多路复用器:= http.NewServeMux()
fs:= http.FileServer(http.Dir(“ static”))
处理程序:= http.StripPrefix(“ / static /”,fs)
mux.Handle(“ / static /”,handler)
mux.HandleFunc(“ / my-example-url /”,FooHandler)
}
在FooHandler()里面我有一些println()
func FooHandler(w http.ResponseWriter,r * http.Request){
println(“ r.URL.Path->”,r.URL.Path)
//更多业务逻辑
}
//输出:
r.URL.Path-> /my-example-url/static/css/normalize.css
r.URL.Path-> /my-example-url/static/libs/xss.js
因此url的起始部分不应该存在(/ my-example-url /部分)
我认为只有当我尝试为带有斜杠的端点服务时才会发生这种情况:
mux.Handle(“ / my-example-url /”,处理程序)
我的最终目标是根据要在结尾的斜杠后在URL中传递的id获得一些资源,例如:
http:// localhost:3001 / my-example-url / bb98610
答案 0 :(得分:1)
在html文件中,该文件触发了对静态资源的请求,您很可能使用相对路径而不是绝对路径,这会导致浏览器将该相对路径附加到位置栏中已经存在的路径。
例如:
<link href="static/css/normalize.css" rel="stylesheet">
将被浏览器转换为/my-example-url/static/css/normalize.css
。
相反,您想使用(请注意斜杠):
<link href="/static/css/normalize.css" rel="stylesheet">