处理url“ / foobar /”替换css <link />,而js <script>路径以“ / foobar /”开头

时间:2018-08-16 08:44:37

标签: go

我正在尝试为路由器使用标准的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
 

1 个答案:

答案 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">