1 Star 0 Fork 0

leminewx / gokit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
cors.go 1.80 KB
一键复制 编辑 原始数据 按行查看 历史
wenxian 提交于 2023-12-18 20:47 . 新增HTTP服务器组件
package cors
import (
"strconv"
"strings"
)
type CORS map[string]string
// NewCors 创建一个跨域头配置
func NewCors() CORS {
c := make(CORS)
// 允许访问的域
c["Access-Control-Allow-Origin"] = "*"
// 允许跨域请求的方法
c["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS"
// 允许的所有头信息字段,不限于浏览器在"预检"中请求的字段
c["Access-Control-Allow-Headers"] = "*"
// 允许将对请求的响应暴露给页面
c["Access-Control-Allow-Credentials"] = "false"
// 可选,用来指定本次预检请求的有效期,单位为秒,即在此期间,不用发出另一条预检请求
c["Access-Control-Max-Age"] = "1728000"
return c
}
func (own CORS) AllowCredentials() CORS {
own["Access-Control-Allow-Credentials"] = "true"
return own
}
func (own CORS) SetMaxAge(expire int) CORS {
own["Access-Control-Max-Age"] = strconv.Itoa(expire)
return own
}
func (own CORS) AllowOrigins(origins ...string) CORS {
if len(origins) == 0 {
return own
}
return own.modify("Access-Control-Allow-Origin", origins...)
}
func (own CORS) AllowMethods(methods ...string) CORS {
if len(methods) == 0 {
return own
}
return own.modify("Access-Control-Allow-Methods", methods...)
}
func (own CORS) AllowHeaders(headers ...string) CORS {
if len(headers) == 0 {
return own
}
return own.modify("Access-Control-Allow-Methods", headers...)
}
func (own CORS) ExposeHeaders(headers ...string) CORS {
if len(headers) == 0 {
return own
}
return own.modify("Access-Control-Expose-Headers", headers...)
}
func (own CORS) modify(field string, values ...string) CORS {
var builder strings.Builder
for _, v := range values {
builder.WriteString(v)
builder.WriteString(", ")
}
s := builder.String()
own[field] = s[:len(s)-2]
builder.Reset()
return own
}
Go
1
https://gitee.com/leminewx/gokit.git
git@gitee.com:leminewx/gokit.git
leminewx
gokit
gokit
d2d37884a85f

搜索帮助