我對http.FileServer
和斜線有一個可怕的混淆。轉到http:服務/靜態和/靜態之間的區別/
我需要爲html頁面提供腳本。在我工作的目錄中,我有頁面index.html
,我有一個static
目錄,裏面有myscript.js
。
第一個問題:是不是正確的寫
<script src="/static/myscript.js"></script>
?我也看到了src="static/myscript.js"
,我不知道是否有使用其中一個的原因(但我想它會影響我們必須在服務器上編寫的處理程序)。
讓我們假設我們解決了第一個版本。第二個問題:在服務器端,我想註冊static
目錄的處理程序。通過this example啓發,我做的:
fs := http.FileServer(http.Dir("./static"))
http.Handle("/static", http.StripPrefix("/static", fs))
但我得到一個404
。但是,如果我使用:
fs := http.FileServer(http.Dir("./static"))
http.Handle("/static/", http.StripPrefix("/static/", fs))
與結束斜線,它工作正常!
我對網絡服務器真的很陌生,所以我將不勝感激任何解釋,包括什麼是函數傳遞的實際地址。例如,我不知道(並且我無法從net/http
文檔中找到它)在提供/static
請求時傳遞給處理程序的地址是什麼。我想這是/static/myscript.js
,因爲我們使用http.StripPrefix
,但我沒有實際的方法來證明它。
相關:[爲什麼我需要使用http.StripPrefix來訪問我的靜態文件?](http:// stackoverflow。com/questions/27945310/why-do-i-need-to-use-http-stripprefix-to-access-my-static-files) – icza