go - 如何通过代理绕过完整性检查

标签 go proxy hugo

我有一个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检查吗?

最佳答案

我已经解决了问题。 Golang代理工作正常。没有任何问题。雨果静态页面上有一些对最小化的js和css的引用,带有绝对路径,这是造成问题的原因。当请求来自golang代理时,请求来自不同的url前缀,因此css和js被破坏,因为绝对路径导致的文件不同于预期的hugo静态文件(因此完整性)失败错误)。

解决方案是在hugo配置中简单地将前缀添加为baseURL。有关更多信息,请访问:https://gohugo.io/getting-started/configuration/

关于go - 如何通过代理绕过完整性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59174482/

相关文章:

go - 我可以在 Hugo 中使用来自 URL 的图像处理吗?

go - 在 GoClipse 上保持 ListenAndServe

html - 具有二维数组的用于 Web 开发的 Google Go 模板

function - 为什么我可以从Go中的类型调用func?

java - Apache Camel 与 mina 代理 tcp 消息

java - OS X 系统代理的 JVM 自动设置如何工作?

browser - 可以通过浏览器访问但无法ping通?

r - Blogdown 和 hugo 不解析 Markdown 中的 html 标签

json - 返回空列表而不是 null

localhost - 如何在本地网络上访问 Rstudio blogdown 网站?