我正在尝试设置一个简单的代理,并且我有一些 Web 应用程序需要在其中查找特定文件:
proxy := httptest.NewServer(&httputil.ReverseProxy{
Rewrite: func(rp *httputil.ProxyRequest) {
rp.SetXForwarded()
rp.SetURL(url)
rp.Out.Header = r.Header
rp.Out.URL.Path = path
},
})
基本上,我从 url.Parse 构建的“url”在打印出来时看起来是正确的,但它总是在代理中添加尾部斜杠。因此,获取 .js 文件后,它会访问我的 Web 服务器并尝试使用 .js/ 代替。我显然可以添加逻辑并解决这个问题(我在上面只是删除了一个名为“path”的变量中的尾部斜杠),但感觉我遗漏了什么。也许网络浏览器正在添加尾部斜线?
此外,我必须将内容类型标头添加到响应中,否则不会加载 javascript 文件,因为 MIME 类型是文本/纯文本。我应该添加其他标题吗?我认为代理会更充实一点,更少手动。我尝试使用“NewSingleHostReverseProxy”,但似乎无法修改路径(查看导演,但感觉不直观)。
这里的任何指导表示赞赏。添加删除尾部斜杠的逻辑显而易见且简单,但感觉就像我在与图书馆作斗争,还不如自己动手做。
这里有一个open MR没有合并,但是听起来好像有争论: https://github.com/golang/go/issues/50337
我正在尝试为后端和前端应用程序制作反向代理。我想找到一个简单的解决方案,可以有效地为文件服务器执行此操作并准确设置标头。