gpt4 book ai didi

go - 如何设置多值 HTTP header ,例如 Content-Security-Policy?

转载 作者:IT王子 更新时间:2023-10-29 01:39:54 29 4
gpt4 key购买 nike

我正在尝试在 http.ResponseWriter 对象上设置 Content-Security-Policy header 。这是一个具有多个值的 header 。我的问题是 http.Header 的所有方法取一个键和一个值。例如,Set() method看起来像这样:

func (h Header) Set(key, value string)

没有方法可以将值的 slice 分配给 header 字段。我想要一个看起来像这样的标题。

header := http.Header{
"Content-Type": {"text/html; charset=UTF-8"},
"Content-Security-Policy": {"default-src 'self'", "font-src themes.googleusercontent.com", "frame-src 'none'", "style-src 'self' fonts.googleapis.com"},
}

这将创建 header ,但我不知道如何将它与 http.ResponseWriter 对象相关联。此外,如果我能够以某种方式用上面的 header 替换 ResponseWriter 的 header ,我是否必须手动设置 Content-Length 字段?

最佳答案

我不确定我是否完全理解这个问题,但是 Content-Security-Policy 需要一个包含由 ; 分隔的列表的 header 。

如果你想使用 slice ,你总是可以使用这样的东西:

csp := []string{"default-src: 'self'", "font-src: 'fonts.googleapis.com'", "frame-src: 'none'"}
header := http.Header{
"Content-Type": {"text/html; charset=UTF-8"},
}
header.Set("Content-Security-Policy", strings.Join(csp, "; "))

此外,如果您想使用不同的值多次发送 header (我认为就像您最初打算的那样),您可以使用 header.Add .

Add adds the key, value pair to the header. It appends to any existing values associated with key.

如果您想在您的 http 处理程序中使用它,请使用 ResponseWriter.Header() 获取标题:

func Handler(rw http.ResponseWriter, req *http.Request) {
header := rw.Header()
csp := []string{"default-src: 'self'", "font-src: 'fonts.googleapis.com'", "frame-src: 'none'"}

header.Set("Content-Type": "text/html; charset=UTF-8")
header.Set("Content-Security-Policy", strings.Join(csp, "; "))
rw.WriteHeader(200) //or write anything really
}

关于go - 如何设置多值 HTTP header ,例如 Content-Security-Policy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25028441/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com