go / golang服务器中的静态CSS文件

How do I serve static css files in go (go version go1.9.1 linux/amd64)?

My present code doesn't work (it does show website but it does not see css). Here is my attempt to use standard file serving using go handler. When I go into page source and click link to css/styles.css it appears it is visible and redirects correctly (is under correct url). I presume I lack knowledge about some step of parsing.

package main

import (
    "html/template"
    "net/http"
    "fmt"
)

const (
    PORT = ":3000"
    HOST = "localhost"
)

func handleBooks(w http.ResponseWriter, r *http.Request) {
    tmpl := template.Must(template.ParseFiles("books.html"))
    tmpl.Execute(w)
}

func main() {
    fs := http.FileServer(http.Dir("css"))
    http.Handle("/css/", http.StripPrefix("/css/", fs))

    http.HandleFunc("/books", handleBooks)
    fmt.Println("Listening on " + HOST + PORT)
    http.ListenAndServe(PORT, nil)
}

style.css

.body {
    margin-left: auto;
    margin-right: auto;
    width: 1000px;
}

books.html

<html>
<head>
<title>Books</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<ul>
    books
        <li>book1</li>
        <li>book2</li>
</ul>
</body>
</html>

My directory tree:

  • src:
    • books.html
    • main.go
    • css
      • style.css
douzhang5984
douzhang5984 打开浏览器的“网络”标签,刷新页面,可以看到浏览器正在请求css文件吗?有什么反应?您可以看到类似imgur.com/a/v1kkki2的内容吗?
大约 2 年之前 回复
doufang6268
doufang6268 已经尝试过,css文件只是从html的级别不可见:/
大约 2 年之前 回复
dsilhx5830
dsilhx5830 确保在CSS中添加您可以实际看到的内容,请尝试使用body{background-color:green;}(身体前没有点)
大约 2 年之前 回复
douyu9433
douyu9433 尝试添加<divclass=“body”>并从/至CSS路径中删除/添加斜线,问题仍然存在
大约 2 年之前 回复
dongliu8559
dongliu8559 嗯,我的FileServer目录与Handle目录混淆了……我的错
大约 2 年之前 回复
dqq48152418
dqq48152418 标准的ServeMux不支持“相对”路径解析,您需要使用斜杠,或者假定您提供了主机,但此处不是这种情况。此http.Handle(“css/”,...是错误的。
大约 2 年之前 回复
dougehe2022
dougehe2022 您的CSS说.body,您的HTML中有一个body类吗?.body和body不一样。
大约 2 年之前 回复
douguazhi5966
douguazhi5966 那是另一件事,根本没有错误
大约 2 年之前 回复
dongming4994
dongming4994 您遇到什么错误?看一下浏览器控制台,特别是“网络”选项卡,看看浏览器在哪里寻找css文件,得到的响应是什么。
大约 2 年之前 回复
dpdrtj1075
dpdrtj1075 还是一样的东西:/
大约 2 年之前 回复
doudiao2335
doudiao2335 更改href以/开头(例如href=“/css/style.css”)
大约 2 年之前 回复

1个回答



问题似乎出在以下部分:</ p>

  fs:= http  .FileServer(http.Dir(“ css”))
http.Handle(“ / css /”,http.StripPrefix(“ / css /”,fs))
</ code> </ pre>

清除缓存后,结果发现http.Handle第一个参数中的斜杠是必需的。 非常感谢mkopriva,没有您,我就不会检查它。</ p>
</ div>

展开原文

原文

It seems that the problem was with this part:

fs := http.FileServer(http.Dir("css"))
http.Handle("/css/", http.StripPrefix("/css/", fs)) 

After I cleared cache it turned out that the slash in the first argument of http.Handle is necessary. Big thanks to mkopriva, without you I wouldn't have checked it.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问