亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

服務 CSS 時在 Golang 中出現 MIME 類型('text/plain')錯誤

服務 CSS 時在 Golang 中出現 MIME 類型('text/plain')錯誤

Go
料青山看我應如是 2023-06-12 09:34:11
我正在構建我的第一個 Go web 項目,當我加載我的頁面時,我在瀏覽器控制臺上收到此錯誤Refused to apply style from 'http://localhost:8080/static/css/processor-auth.css' because its MIME type ('text/plain') is not a supported stylesheet MIME type, and strict MIME checking is enabled.我不確定我做錯了什么,因為我已經添加了這段代碼來加載靜態文件http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))這是我的 main.go 文件的樣子: package mainimport(    "net/http"    "os"    "html/template"    "github.com/julienschmidt/httprouter")// Auth struct handlertype auth struct{}func (auth *auth) ServeHTTP(w http.ResponseWriter, r *http.Request){    wd,_:= os.Getwd()    t := template.Must(template.ParseFiles(wd+"/templates/processor/auth.html"))    err:=t.Execute(w,nil)    if err !=nil{        http.Error(w,"Could not execute template",500)    }}func main(){    router:= httprouter.New()    // set the static files    http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))    router.Handler("GET","/auth",&auth{})    server := http.Server{        Addr:"127.0.0.1:8080",        Handler:router,    }    server.ListenAndServe()}編輯:解決了問題因為我用作httprouter多路復用器,所以我無法使用http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))我必須更新到 httprouter 的 ServeFiles 函數并將代碼更新為 router.ServeFiles("/static/*filepath",http.Dir("static"))
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

我使用的是 windows 機器(windows 10 和 windows server 2019),我在 javascript 文件上遇到了同樣的問題,我進入注冊表并將其從“text/plain”\HKEY_CLASSES_ROOT\.js > "Content Type"更改為“application/javascript”,然后重新啟動 PC并修復了它



查看完整回答
反對 回復 2023-06-12
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

為什么會這樣?

出現此錯誤是因為 Go 正在自動檢測文件的內容類型。為了進行自動檢測,它使用一個映射,該映射指向文件擴展名(如 .js)-> MIME 類型(如文本/純文本)。要獲取此地圖,它會從本地機器讀取它。因此,如果您的本地計算機在其注冊表(或您的操作系統的等效項)中對于 .css 文件的值不正確,并且您使用的代碼會自動檢測正在提供的文件的 MIME 類型,那么這可能會發生。

什么是注冊表設置不正確?

我在重新安裝或卸載 Visual Studio 時遇到不正確的注冊表值。

Windows修復

您需要使用 regedit 編輯注冊表項,以便“內容類型”注冊表項指向正確的值。您可以在兩個地方找到擴展密鑰:

HKEY_CLASSES_ROOT 包含一個列表。就我而言,我在該列表中查找 .js 并將其值從 text/plain 更改為 application/javascript。在原始發帖者的位置,錯誤似乎在 .css 中,因此您將 HKEY_CLASSES_ROOT\.css 鍵“內容類型”設置為文本/css。

HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES 也包含一個列表。您應該以相同的方式更新它,使其與 HKEY_CLASSES_ROOT 相匹配。在我的例子中,這已經正確設置為 application/javascript 所以我假設它不是 Go 正在讀取的第一個注冊表值。


查看完整回答
反對 回復 2023-06-12
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

我在 Windows 上遇到了這個問題,我通過


func FixMimeTypes() {

? ? err1 := mime.AddExtensionType(".js", "text/javascript")

? ? if err1 != nil {

? ? ? ? log.Printf("Error in mime js %s", err1.Error())

? ? }


? ? err2 := mime.AddExtensionType(".css", "text/css")

? ? if err2 != nil {

? ? ? ? log.Printf("Error in mime js %s", err2.Error())

? ? }

}

查看完整回答
反對 回復 2023-06-12
  • 3 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號