使用变量时,大猩猩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("/").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
}

当我调用URL时,http://server/foo一切都很好。
随着例如http://server/bar/1网站得到交付,但我收到错误消息,如

The resource "http://server/bar/ui/static/css/style.css" has been blocked due to mime type mismatch

/barhttp://server/bar/ui/static/...本不应该存在。我该如何解决?

mkopriva:
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您访问时特别发生的,则可以推断出该问题是由html中的相对链接引起的(和/或静态由/bar处理程序提供的html)正确链接的文件

因此,解决方案是在您的静态和HTML文件中使用绝对路径。


当我调用URL http:// server / foo时,一切都很好。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章