跨域

跨域, 对于个人目前的接触的项目来说, 我知道的出现最多的就是使用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"},
	}))

即可