为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:io.Copy(httpReponseWriter, os.File)

Golang:io.Copy(httpReponseWriter, os.File)

Go
慕标5832272 2021-07-05 16:31:15
在意识到 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 纯文本)并且图像将在页面中正常加载,但我的页面都没有任何样式。关于为什么的任何想法?
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

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

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

我相信,Go 源代码显示了正在调用的处理。

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

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

做到了。


查看完整回答
反对 回复 2021-07-05
  • 1 回答
  • 0 关注
  • 321 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信