Golang игнорирует обработку статических файлов
Всем привет есть струтура проекта
-testcss
---static
------test.html
------test.css
---main.go
Внутри test.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" >
<link rel="stylesheet" type="text/css" href="test.css">
</head>
<body>
<h1>Data</h1>
</body>
</html>
Внутри main.go
package main
import (
"log"
"net/http"
"text/template"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static", http.FileServer(http.Dir("/home/umd/gop/testcss/"))))
http.HandleFunc("/test/", func(w http.ResponseWriter, r *http.Request) {
(w).Header().Set("Content-Type", "text;charset-utf-8")
templ, _ := template.ParseFiles("./static/test.html")
templ.Execute(w, nil)
})
log.Fatal(http.ListenAndServe(":8181", nil))
}
Внутри test.css
h1{
color: springgreen;
padding-left: 70%;
}
body{
background-color: red;
}
Проблема:
Если зайти на роут localhost:8181/test/ то я ожидаю там увидеть html страницу с примененными стилями css, но вижу только html страницу без применения стилей.
Как правильно подключить css чтобы golang корректно обработал и вывел страницу с применением стилей? Гуглил и везде подход такой
http.Handle("/static/", http.StripPrefix("/static", http.FileServer(http.Dir("/home/umd/gop/testcss/"))))
Но он почему то не работает, либо я неправильно пытаюсь загрузить страницу
templ, _ := template.ParseFiles("./static/test.html")
templ.Execute(w, nil)
Но я не знаю как сделать правильно и чтобы работал css Примечательно и возможно важно:
Если зайти на роут localhost:8181/static/ то там есть моя папка static в которую я могу перейти и открыть html документ и он отображается уже с примененными стилями. Полный роут при этом такой
localhost:8181/static/static/test.html
Прошу помогите пожалуйста разобраться. Спасибо всем кто откликнется.
UPD: Если не добавлять строку
(w).Header().Set("Content-Type", "text;charset-utf-8")
То страница загрузится без стилей и будет сообщение в консоли браузера
Таблица стилей http://192.168.1.109:8181/test/test.css не была загружена, потому что её MIME-тип («text/html») не «text/css».
Если в этой строке text;charset-utf-8 поменять на text/css;charset-utf-8 то страница загрузится и я получу содержимое файла test.html а в коноли браузера будет
Простой текстовый документ не содержит объявления кодировки символов. Если документ содержит символы, не входящие в диапазон US-ASCII, то в некоторых конфигурациях браузера в документе будет отображён искажённый текст. Кодировка символов файла должна быть объявлена в протоколе передачи или файл должен использовать индикатор порядка байтов (BOM) в качестве сигнатуры кодировки.
Если в этой строке text;charset-utf-8 поменять на text/html;charset-utf-8 то в браузере загрузится страница корректно но без стилей а в консоли браузера будет ошибка
Таблица стилей http://192.168.1.109:8181/test/test.css не была загружена, потому что её MIME-тип («text/html») не «text/css».
Если оставить строку text;charset-utf-8 то страница загружается без ошибок но без стилей