Files
tbphp 7ed01e668b feat(images): 支持 Antigravity 与 Gemini 共享生图转换 (#605)
* feat(antigravity): 支持 Images 单向生图转换

* feat(images): 复用转换并支持 Gemini 渠道生图

* fix(images): 修正生图转换失败分类并恢复候选回退
2026-09-09 13:20:10 +08:00

53 lines
1.1 KiB
Go

package httpheader
import (
"net/http"
"strings"
)
var representationMetadataNames = [...]string{
"Content-Encoding",
"Content-Length",
"ETag",
"Digest",
"Content-MD5",
"Content-Range",
"Content-Digest",
"Repr-Digest",
"Signature",
"Signature-Input",
}
func NormalizeUpstreamRequestRepresentation(request *http.Request, finalBodyLength int64) {
if request == nil {
return
}
if request.Header == nil {
request.Header = make(http.Header)
} else {
request.Header = request.Header.Clone()
}
StripRepresentationMetadata(request.Header)
deleteField(request.Header, "Accept-Encoding")
request.Header.Set("Accept-Encoding", "identity")
request.ContentLength = finalBodyLength
}
// StripRepresentationMetadata 清理绑定原始 HTTP 正文的元数据,适用于请求与响应。
func StripRepresentationMetadata(headers http.Header) {
if headers == nil {
return
}
for _, name := range representationMetadataNames {
deleteField(headers, name)
}
}
func deleteField(headers http.Header, target string) {
for name := range headers {
if strings.EqualFold(name, target) {
delete(headers, name)
}
}
}