beego 加入跨域访问支持

Mar 21, 2017 09:02 · 286 words · 1 minute read

跨域

跨域, 对于个人目前的接触的项目来说, 我知道的出现最多的就是使用rxjs访问后端API时发生. 跨域发生时, 如果没有了解过, 那么很可能回去rxjs那边去找问题, 因为毕竟是这货报出的错嘛.

跨域的请求流程, 首先rxjs内部向服务器端发出OPTIONS类型的请求, 如果服务器端没有响应, 那么就会出现跨域了. 而 OPTIONS 请求的结果就是返回一个带有Access-Control-Allow-Origin头的Response, rxjs得知这个头之后就允许了后续的跨域访问.

beego的跨域访问支持其实在官方的仓库里以插件形式存在的

https://github.com/astaxie/beego/blob/master/plugins/cors/cors.go

只要在beego.Run() 之前加入

    beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
        AllowAllOrigins: true,
        AllowMethods:    []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
        AllowHeaders:    []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Content-Type"},
        ExposeHeaders:   []string{"Content-Length", "Access-Control-Allow-Origin"},
    }))

即可