我有一个Go代理服务器,该服务器将传入的请求代理到另一个Nginx服务,其中部署了从hugo生成的一堆静态文件。 Go代理服务器代码为:
func (w http.ResponseWriter, r *http.Request) {
proxy := httputil.NewSingleHostReverseProxy(target)
proxy.Transport = debug.Transport{} // Set some Debug TCP options here
proxy.ServeHTTP(w, r)
}
debug.Transport
的创建如下:
type Transport struct {
Transport http.RoundTripper
}
func (d Transport) RoundTrip(r *http.Request) (*http.Response, error) {
fmt.Println(r.Header)
d.Transport = &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
return d.Transport.RoundTrip(r)
}
在调试传输中,我已经忽略了TLS配置的证书检查。
如果我直接访问提供hugo静态文件的nginx网址,则可以完美加载静态文件。即使我从Nginx之外从Nginx入口访问,静态文件也可以正常工作。但是,当通过Go代理处理请求时,我会收到错误消息:
Failed to find a valid digest in the 'integrity' attribute for resource 'https://<blah>/js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js' with computed SHA-256 integrity 'Nk/s9htIgKJ5jeLFxUMWgIQGhxGZBKoEWtWEy2qYtJk='. The resource has been blocked.
您知道如何跳过Go http代理中的这些integerity
检查吗?
答案 0 :(得分:0)
我已经解决了问题。 Golang代理工作正常。没有任何问题。雨果静态页面上有一些对最小化的js和css的引用,带有绝对路径,这是造成问题的原因。当请求来自golang代理时,请求来自不同的url前缀,因此css和js被破坏,因为绝对路径导致的文件不同于预期的hugo静态文件(因此完整性)失败错误)。
解决方案是在hugo配置中简单地将前缀添加为baseURL
。有关更多信息,请访问:https://gohugo.io/getting-started/configuration/