使用github.com/gin-contrib/cors三方包, git地址: https://github.com/gin-contrib/cors
安装
go get github.com/gin-contrib/cors
目录models文件下封装一个Cors函数
cors.go
package models
import (
"time"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
)
func Cors() gin.HandlerFunc {
return cors.New(cors.Config{
// 允许跨域访问的协议域名端口号
AllowOrigins: []string{"http://localhost:6666", "http://localhost:9999"},
// AllowOriginFunc优先级大于AllowOrigins
// AllowOriginFunc: func(origin string) bool {
// fmt.Println("origin:", origin)
// // 允许跨域访问名单
// var allowOriginsList = []string{"http://localhost:5173", "http://localhost:9999"}
// //如果allowOriginsList中包含origin,允许访问
// for _, v := range allowOriginsList {
// // 如果访问域名是名单内的则放行
// if strings.Contains(v, origin) {
// return true
// }
// }
// // 匹配不到不放行
// return false
// },
AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"},
AllowHeaders: []string{"Origin", "Content-Length", "Content-Type", "Authorization"},
AllowCredentials: true,
MaxAge: 12 * time.Hour,
ExposeHeaders: []string{"Content-Length"},
})
}
在router中注册使用Cors
router/router.go
package router
import (
"gin-jwt-demo/models"
"github.com/gin-gonic/gin"
)
func init() {
// 路由初始化
r := gin.Default()
// 解决cors跨域
//配置gin允许跨域请求
r.Use(models.Cors())
// api路由注册
ApiRouterInit(r)
// 服务启动
r.Run(":9999")
}
启动服务,测试在前端代码vue项目测试
import axios from "axios";
axios.defaults.baseURL = "http://localhost:9999";
axios.get("/api/v1/?id=100").then((res) => {
console.log("获取接口数据:", res);
});