goalng踩坑之前后端跨域问题
我写的后端是gin,前端同事用vue开发的,第一次联调的时候遇到了跨域问题,这个是前后端分离最常见的需要处理的问题其实处理方式很简单,网上都很多的教程:通过定义一个跨域中间件,实现在请求头消息中加入允许跨域的字段就可以了。但是在我使用了很多方式包括gin自带的cors中间件,和网上的那些自定义中间件(其实具体实现抖差不多的)之后问题依然没有解决。
注意::
不能使用”*“来匹配所有的域允许访问,必须指定前端服务的ip:port才行:
1 2 3 4 5 6 7 8 9 10 11 12 13 | func Cors() gin.HandlerFunc { return func (context *gin.Context) { context.Writer.Header().Set( "Access-Control-Allow-Origin" , "http://192.168.xx.xx:8888" ) //这是前端服务的地址,注意这一行不使用“*” context.Writer.Header().Set( "Access-Control-Max-Age" , "86400" ) context.Writer.Header().Set( "Access-Control-Allow-Methods" , "*" ) context.Writer.Header().Set( "Access-Control-Allow-Headers" , "*" ) context.Writer.Header().Set( "Access-Control-Allow-Credentials" , "true" ) if context.Request.Method == "OPTIONS" { context.AbortWithStatus(http.StatusOK) } context.Next() } } |
强烈推荐阅读CORS原理:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步