我对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