mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 00:01:10 +08:00
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package proxy
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// 设置请求头
|
|
func setRequestHeaders(c *gin.Context, req *http.Request) {
|
|
for key, values := range c.Request.Header {
|
|
for _, value := range values {
|
|
req.Header.Set(key, value)
|
|
}
|
|
}
|
|
}
|
|
|
|
func removeWSHeader(req *http.Request) {
|
|
req.Header.Del("Upgrade")
|
|
req.Header.Del("Connection")
|
|
}
|
|
|
|
func reWriteEncodeHeader(req *http.Request) {
|
|
|
|
if isGzipAccepted(req.Header) {
|
|
req.Header.Set("Content-Encoding", "gzip")
|
|
req.Header.Set("Accept-Encoding", "gzip")
|
|
} else {
|
|
req.Header.Del("Content-Encoding")
|
|
req.Header.Del("Accept-Encoding")
|
|
}
|
|
|
|
}
|
|
|
|
// isGzipAccepted 检查 Accept-Encoding 头部中是否包含 gzip
|
|
func isGzipAccepted(header http.Header) bool {
|
|
// 获取 Accept-Encoding 的值
|
|
encodings := header["Accept-Encoding"]
|
|
for _, encoding := range encodings {
|
|
// 将 encoding 字符串拆分为多个编码
|
|
for _, enc := range strings.Split(encoding, ",") {
|
|
// 去除空格并检查是否为 gzip
|
|
if strings.TrimSpace(enc) == "gzip" {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}
|