我设置了以下路由:
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
将/bar
在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
您访问时特别发生的,则可以推断出该问题是由html中的相对链接引起的(和/或静态由/bar
处理程序提供的html)正确链接的文件。
因此,解决方案是在您的静态和HTML文件中使用绝对路径。
当我调用URL http:// server / foo时,一切都很好。
请注意,/foo
似乎是在该POST
方法下注册的,这样的终结点不会导致浏览器发出对静态文件的后续请求,就像html返回GET终结点一样,因此它没有理由因静态文件“ MIME类型不匹配”而失败错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句