出现该错误的原因是因为跨域访问请求的source与服务器端的Access-Control-Allow-Origin不一致,需要在Beego服务器端进行相关配置。以下是一些代码示例,可以作为参考:
func (this RouterController) Get() { this.Ctx.ResponseWriter.Header().Set("content-type", "application/json") this.Ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", "") // your code here }
package middleware
import ( "github.com/astaxie/beego/context" )
func Cors() func(ctx *context.Context) { return func(ctx *context.Context) { ctx.Output.Header("Access-Control-Allow-Origin", "http://localhost:3000") // 更改此处为你的源地址 ctx.Output.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") ctx.Output.Header("Access-Control-Allow-Credentials", "true") ctx.Output.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization") if ctx.Request.Method == "OPTIONS" { ctx.Output.Status = 200 } } }
"web" : { "httpport" : 8080, "enablegzip" : false, "staticdir" : "static", "templatepath" : "views", "sessionon" : true, "sessiongcmaxlifetime" : 3600, "sessionprovider" : "memory", "sessionname" : "sessionid", "sessioncookiepath" : "/", "sessioncookielifeetime" : 0, "cors": { // 添加此处配置 "alloworigins": ["http://localhost:3000"], "allowmethods": ["POST", "GET", "OPTIONS", "PUT", "DELETE"], "allowheaders": ["Origin", "Content-Type", "AccessToken", "X-CSRF-Token", "Authorization"], "exposeheaders": ["Content-Length", "Access-Control-Allow-Origin"], "maxage": 1728000 } }
以上就是解决'No 'Access-Control-Allow-Origin' header...”问题的几种方法,可以根据实际情况进行选择。