gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:06:36 25 4
gpt4 key购买 nike

我设置了以下路由:

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文件中使用绝对路径。

When I call the URL http://server/foo everything is fine.



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

关于go - 使用变量时, gorilla mux为静态文件设置了错误的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61456204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com