Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在HTTP服务器中提供静态文件_Http_Go_Server_Assets - Fatal编程技术网

在HTTP服务器中提供静态文件

在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

我使用golang作为一个中型web应用程序的后端,该应用程序在不同的文件夹中有几个页面和大量CSS和javascript,我尝试使用golang为网站提供服务,但只加载索引文件,其他页面、javascript和CSS不加载。由于我的HTML文件彼此不同,所以我不使用模板

下面是文件结构

-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)