登录
首页 >  Golang >  Go问答

规避完整性检查的方法

来源:stackoverflow

时间:2024-03-21 19:51:36 230浏览 收藏

在使用 Go 代理服务器代理请求到部署了 Hugo 静态文件的 Nginx 服务时,出现完整性检查错误。原因是静态文件中的绝对路径引用导致代理服务器上的文件与预期不同,从而触发完整性失败。解决方案是通过在 Hugo 配置中添加前缀作为 baseURL 来解决此问题。

问题内容

我有一个 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:///js/main.min.29b0315468c00226fa6f4556a9cebc0ac4fe1ce1457a01b22c0a06b329877383.js' with computed SHA-256 integrity 'Nk/s9htIgKJ5jeLFxUMWgIQGhxGZBKoEWtWEy2qYtJk='. The resource has been blocked.

知道如何在 go http 代理中跳过这些 integerity 检查吗?


解决方案


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

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

终于介绍完啦!小伙伴们,这篇关于《规避完整性检查的方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>