为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
当年话下 2023-08-07 18:55:15
我有一个 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 url,那么静态文件就可以完美加载。即使我除了 nginx 之外还从 nginx-ingress 访问,静态文件也可以正常使用。但是,当通过 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.integerity知道如何在 Go http 代理中跳过这些检查吗?
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

我已经找出问题所在了。golang 代理工作正常。没有任何问题。Hugo 静态页面有一些对缩小的 js 和 css 的引用,带有绝对路径,这导致了问题。当请求来自 golang 代理时,它来自不同的 url 前缀,因此发现 css 和 js 已损坏,因为绝对路径导致的文件与预期的一个 Hugo 静态文件不同(因此完整性失败错误)。

解决方案是简单地在hugo 配置中添加前缀baseURL


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信