gpt4 book ai didi

css - Golang : io. Copy(httpReponseWriter, os.File) 与 http.ServeFile()

转载 作者:IT王子 更新时间:2023-10-29 01:00:04 26 4
gpt4 key购买 nike

在意识到 http 包有一个内置的 ServeFile 方法之前,我或多或少地实现了一个静态处理程序,如下所示:

func StaticHandler(w http.ResponseWriter, r *http.Request) {
filename := mux.Vars(r)["static"] // using gorilla/mux
f, err := os.Open(fmt.Sprintf("%v/static/%v", webroot, filename))

if err != nil {
http.NotFound(w, r)
return
}

defer f.Close()

io.Copy(w, f)
}

并且,例如,以这种方式链接我的样式表和图像:

<img href="/image.jpg" />
<link rel="stylesheet" type="text/css" href="/stylesheet.css">

这工作得很好,除了一件事:我的链接样式表没有被浏览器应用(在 Chrome、Firefox、Midori 中测试)。可以提供样式表(访问 MYSITE/stylesheet.css 显示 css 纯文本)并且图像将在页面中正常加载,但我的页面都没有任何样式。

关于原因有什么想法吗?

最佳答案

简单的回答:标题是错误的。

Go 将为 html、jpg 和 png 提供正确的 header ,但 css(和 js)文件保留为“text/plain”而不是“text/css”和“text/javascript”。

Go source显示正在调用的处理,我相信。

无论如何,通过以下方式设置内容类型:

w.Header().Set("Content-Type", "text/css; charset=utf-8")

成功了。

关于css - Golang : io. Copy(httpReponseWriter, os.File) 与 http.ServeFile(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19690731/

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