第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

與官方 Docker 鏡像相比,Go Mime 包(1.14)在本地表現(xiàn)不同

與官方 Docker 鏡像相比,Go Mime 包(1.14)在本地表現(xiàn)不同

Go
飲歌長嘯 2022-05-23 15:13:31
我已經(jīng)將我的本地 Go 版本從 升級1.13到1.14,然后我通過重新初始化使用go mod.本地:$ go versiongo version go1.14 linux/amd64go.mod我的項(xiàng)目:module example-projectgo 1.14mimeGo 1.14中的包中有一個(gè)更新,將.js文件的默認(rèn)類型從 更改application/javascript為text/javascript.我有一個(gè)應(yīng)用程序,它提供一個(gè)包含 JavaScript 文件的文件夾,例如:func main() {    http.HandleFunc("/static/", StaticHandler)    http.ListenAndServe(":3000", nil)}func StaticHandler(w http.ResponseWriter, r *http.Request) {    fs := http.StripPrefix("/static", http.FileServer(http.Dir("public/")))    fs.ServeHTTP(w, r)}我更新了一個(gè)測試用例以反映 Go 1.14 中的 mime 更改:func TestStaticHandlerServeJS(t *testing.T) {    req, err := http.NewRequest("GET", "/static/index.js", nil)    if err != nil {        t.Fatal(err)    }    rr := httptest.NewRecorder()    handler := http.HandlerFunc(StaticHandler)    handler.ServeHTTP(rr, req)    if status := rr.Code; status != http.StatusOK {        t.Errorf("handler returned wrong status code: got %v want %v",            status, http.StatusOK)    }    expected := "text/javascript; charset=utf-8"    if rr.Header().Get("Content-Type") != expected {        t.Errorf("handler returned unexpected Content-Type: got %v want %v",            rr.Header().Get("Content-Type"), expected)    }}當(dāng)我在本地運(yùn)行它時(shí),檢查 Content-Type 的測試用例失?。篢estStaticHandlerServeJS: main_test.go:27: handler returned unexpected Content-Type: got application/javascript want text/javascript; charset=utf-8我還可以在瀏覽器中確認(rèn)該文件確實(shí)是使用 Mime 類型“application/javascript”提供的,就像它在 Go 1.13 中一樣。當(dāng)我使用官方鏡像在 Docker 容器上運(yùn)行這個(gè)測試時(shí)golang:1.14.0-alpine3.11,這個(gè)測試通過了,它反映了mime包的變化行為。因此,我留下了一個(gè)在本地失敗并通過容器的測試用例。我只在本地維護(hù)了一個(gè) Go 版本,1.14就像我上面展示的那樣。mime我的本地 Go 安裝程序的包行為不同的原因可能是什么?
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

這對我來說也很有趣,我也有和你一樣的行為 - go 1.14 在我的 mashine (macOs catalina) 應(yīng)用程序/javascript 上交付,而不是 text/javascript。我調(diào)試了程序,在 mime 包的 type.go 中發(fā)現(xiàn)了這個(gè)函數(shù):


func initMime() {

    if fn := testInitMime; fn != nil {

        fn()

    } else {

        setMimeTypes(builtinTypesLower, builtinTypesLower)

        osInitMime()

    }

}

else 塊中正在發(fā)生有趣的事情。在將擴(kuò)展分配給的 builtInTypes 設(shè)置后,將文件擴(kuò)展js分配給text/javascript操作系統(tǒng)特定的內(nèi)容類型,這會(huì)覆蓋內(nèi)置分配。在 mac 上,它將文件 type_unix.go where files


"/etc/mime.types",

"/etc/apache2/mime.types",

"/etc/apache/mime.types",

經(jīng)測試可用,在我的情況下/etc/apache2/mime.types,操作系統(tǒng)中存在一個(gè)文件,它包含...令人驚訝的一行 application/javascript js 并且此行覆蓋了 .js 擴(kuò)展的 go 內(nèi)置定義,并導(dǎo)致Content-Type: application/javascript交付給客戶端并導(dǎo)致您的測試失敗。


查看完整回答
反對 回復(fù) 2022-05-23
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號