在Go中启用CORS(跨源资源共享)可以通过以下步骤完成:
import (
"net/http"
)
func enableCors(handler http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 允许特定的源访问资源
w.Header().Set("Access-Control-Allow-Origin", "http://example.com")
// 允许特定的请求方法
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
// 允许特定的请求头
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
// 允许携带身份凭证(如Cookie)
w.Header().Set("Access-Control-Allow-Credentials", "true")
// 如果是预检请求(OPTIONS方法),直接返回
if r.Method == "OPTIONS" {
return
}
// 继续处理请求
handler.ServeHTTP(w, r)
})
}
func handleRequest(w http.ResponseWriter, r *http.Request) {
// 处理请求的逻辑
// ...
}
func main() {
// 创建路由器
router := http.NewServeMux()
// 注册处理器函数
router.HandleFunc("/", handleRequest)
// 使用CORS中间件包装路由器
corsRouter := enableCors(router)
// 启动服务器
http.ListenAndServe(":8080", corsRouter)
}
以上代码中,enableCors
函数是一个中间件函数,它会在每个请求到达时设置CORS相关的响应头。handleRequest
函数是实际处理请求的函数,你可以在其中编写你的业务逻辑。main
函数中创建了一个路由器,并将handleRequest
函数注册为根路径的处理器函数。然后,使用enableCors
函数包装路由器,最后通过http.ListenAndServe
启动服务器。
这样,在Go中就启用了CORS,允许特定的源访问资源,并设置了允许的请求方法、请求头和携带身份凭证的配置。
腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品和服务选择应根据实际需求进行评估和决策。
领取专属 10元无门槛券
手把手带您无忧上云