gpt4 book ai didi

go - FileServer处理找不到带有MIME类型错误而不是404的CSS

转载 作者:行者123 更新时间:2023-12-01 20:08:36 24 4
gpt4 key购买 nike

我正在运行一个基本的http.FileServer来为静态网站提供服务,但遇到了一个问题,其中对不存在的CSS文件的请求因MIME类型错误而被取消:

Refused to apply style from 'http://localhost:8080/assets/main.css' because its MIME type ('text/plain')
理想情况下,我希望将其处理为404错误,因为这实际上是应该的。我可以尝试任何可能的解决方法吗?

最佳答案

net/http源代码(fs.go):

// toHTTPError returns a non-specific HTTP error message and status code
// for a given non-nil error value. It's important that toHTTPError does not
// actually return err.Error(), since msg and httpStatus are returned to users,
// and historically Go's ServeContent always returned just "404 Not Found" for
// all errors. We don't want to start leaking information in error messages.
func toHTTPError(err error) (msg string, httpStatus int) {
if os.IsNotExist(err) {
return "404 page not found", StatusNotFound
}
if os.IsPermission(err) {
return "403 Forbidden", StatusForbidden
}
// Default:
return "500 Internal Server Error", StatusInternalServerError
}
文件服务器返回200,其中包含404错误的纯文本文件。浏览器尝试将此纯文本错误页面解释为CSS文件,并引发错误。
返回纯文本文件的行为不能在 FileServer()返回的处理程序上覆盖。
正如已经指出的那样,这实际上不是 net/http中的错误。
如果由于某种原因您不希望这种行为,您可以探索为404响应创建一个自定义处理程序,这已在 this thread中进行了探讨。您还可以使用诸如Gorilla之类的路由库,该库具有 overridable behavior的未找到页面。

关于go - FileServer处理找不到带有MIME类型错误而不是404的CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62702540/

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