gorilla mux在使用变量时为静态文件设置了错误的路径

gorilla mux在使用变量时为静态文件设置了错误的路径,go,gorilla,mux,Go,Gorilla,Mux,我已设置以下路由: func (app *application) routes() *mux.Router { r := mux.NewRouter() fs := http.FileServer(http.Dir("./ui/static/")) r.PathPrefix("/ui/static/").Handler(http.StripPrefix("/ui/static/", fs)) authRequired := r.PathPrefix("/").

我已设置以下路由:

func (app *application) routes() *mux.Router {
    r := mux.NewRouter()
    fs := http.FileServer(http.Dir("./ui/static/"))
    r.PathPrefix("/ui/static/").Handler(http.StripPrefix("/ui/static/", fs))

    authRequired := r.PathPrefix("/").Subrouter()

    authRequired.HandleFunc("/foo", app.foo).Methods("POST") // <- this one works fine
    authRequired.HandleFunc("/bar/{id:[0-9]+}", app.bar) // <- this does not

    return r
}
http://server/bar/ui/static/...
不应该在那里。我该如何解决这个问题

The resource "http://server/bar/ui/static/css/style.css" has been blocked due to mime type mismatch
“mime类型不匹配”错误有时是由于找不到文件,并且浏览器接收到一些默认响应,这些响应的正文不包含css,但可能最多只包含一些纯文本或html

如果查看导致错误的路径:

http://server/bar/ui/static/css/style.css
然后是注册静态文件处理程序的路径:

r.PathPrefix("/ui/static/").Handler( ...
<>你会发现浏览器在错误的地方查找文件,如果你认为这个特定的错误在你的代码> /Bar < /C>上发生,你可以推断这个问题是由HTML(和/或HTML正确链接的静态文件)中的相对链接引起的。 因此,解决方案是在静态和html文件中使用绝对路径


当我调用URL时,一切都很好

请注意,
/foo
似乎是在
POST
方法下注册的,这样的端点不会导致浏览器对静态文件发出后续请求,就像html返回GET端点一样,因此它没有理由因静态文件“mime类型不匹配”错误而失败

“mime类型不匹配”错误有时是由于找不到文件,并且浏览器接收到一些默认响应,这些响应的正文不包含css,但可能最多只包含一些纯文本或html

如果查看导致错误的路径:

http://server/bar/ui/static/css/style.css
然后是注册静态文件处理程序的路径:

r.PathPrefix("/ui/static/").Handler( ...
<>你会发现浏览器在错误的地方查找文件,如果你认为这个特定的错误在你的代码> /Bar < /C>上发生,你可以推断这个问题是由HTML(和/或HTML正确链接的静态文件)中的相对链接引起的。 因此,解决方案是在静态和html文件中使用绝对路径


当我调用URL时,一切都很好


请注意,
/foo
似乎是在
POST
方法下注册的,这样的端点不会导致浏览器对静态文件发出后续请求,就像html返回GET端点一样,因此它没有理由因静态文件“mime类型不匹配”错误而失败。

Oh my,因为树木的缘故,我看不见森林。非常感谢你,@mkopriva。请加上它作为答案,这样我就可以接受了。哦,天啊,因为树木的缘故,我看不见森林。非常感谢你,@mkopriva。请将其添加为答案,以便我可以接受。