在HTTP服务器中提供静态文件
我使用golang作为一个中型web应用程序的后端,该应用程序在不同的文件夹中有几个页面和大量CSS和javascript,我尝试使用golang为网站提供服务,但只加载索引文件,其他页面、javascript和CSS不加载。由于我的HTML文件彼此不同,所以我不使用模板 下面是文件结构在HTTP服务器中提供静态文件,http,go,server,assets,Http,Go,Server,Assets,我使用golang作为一个中型web应用程序的后端,该应用程序在不同的文件夹中有几个页面和大量CSS和javascript,我尝试使用golang为网站提供服务,但只加载索引文件,其他页面、javascript和CSS不加载。由于我的HTML文件彼此不同,所以我不使用模板 下面是文件结构 -static -assets -css(folder with subfolders) -js(folder with subfolders) -pages
-static
-assets
-css(folder with subfolders)
-js(folder with subfolders)
-pages (folder with differnt html pages)
-signup.html
-dashboard.html
-index.html
-register_bundle.js
-main.go
我的HTML文件有如下链接(显示index.HTML)
此处显示的错误
您是否尝试为资源文件夹提供处理程序
sdir := "/resources/"
myRouter.PathPrefix(sdir).Handler(http.StripPrefix(sdir, http.FileServer(http.Dir("."+sdir))))
这允许您以子域的形式访问文件夹。问题是浏览器找不到这些JS和CSS文件
fs := http.FileServer(http.Dir("./static"))
MUXRouter.Handle("/", fs)
MUXRouter.PathPrefix("/assets/").Handler(fs)
MUXRouter.PathPrefix("/pages/").Handler(fs)
MUXRouter.Handle("/register_bundle.js", fs)
这样,对http://[host]:[port]/css/style.css的GET请求将从相对的/static/css/
目录返回style.css。上面的代码在我的示例程序中运行。试试看
gor:= mux.NewRouter().StrictSlash(true)
fs := http.FileServer(http.Dir("./static"))
gor.PathPrefix("/transaction").Handler(fs)
如果它不只是尝试读取http.FileServer的文档,那么它可能会工作。请尝试在html中使用绝对路径。i、 e.
“/assets…”
而不是“/assets…”
,与register js文件相同。我试过了…但是你没有试过一起删除/
吗?是的,从所有地方删除了“/”,下面是链接的外观,请尝试清除浏览器缓存,然后重试。此处不使用/resources/i,而应使用/static/right?如果文件为“/assets/js/core/popper.min.js”,则应使用“assets”一个.exe/.go应该和assets文件夹在同一个文件夹中,我想你有-main.go-assets/js/-assets/css/但是如果你有-main.go-static/assets/js/-static/assets/css/yes,你应该使用“/static/”这个assets文件夹在静态文件夹中。因此,相对于main.go文件,文件位置实际上是/static/assets/js/core/popper.min.js,我使用http.FileServer方法为静态文件夹提供服务。所以我应该为每个子文件夹创建另一个方法吗?然后你应该使用“/static/”但请记住:静态文件夹中的所有内容都是公共的,所以如果你有一些不想从internet访问的内容,请小心。当你只是引用某个链接时,请在注释中执行,尽量不要使用答案部分。如果你仍然想回答这个问题并且避免使用评论,那么一个详细的版本可能会有所帮助。另外,请记住,链接将来可能会断开,因此您应该从参考资料中获取相关部分,并将其与答案一起添加,以便即使链接断开后仍有意义。
fs := http.FileServer(http.Dir("./static"))
MUXRouter.Handle("/", fs)
MUXRouter.PathPrefix("/assets/").Handler(fs)
MUXRouter.PathPrefix("/pages/").Handler(fs)
MUXRouter.Handle("/register_bundle.js", fs)
gor:= mux.NewRouter().StrictSlash(true)
fs := http.FileServer(http.Dir("./static"))
gor.PathPrefix("/transaction").Handler(fs)