beego跨域请求配置

Posted qflyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了beego跨域请求配置相关的知识,希望对你有一定的参考价值。

不说废话

在main函数前加入如下代码

func init() {
//跨域设置
var FilterGateWay = func(ctx *context.Context) {ctx.ResponseWriter.Header().Set("Access-Control-Allow-Origin", "*")
//允许访问源
ctx.ResponseWriter.Header().Set("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS")
//允许post访问
ctx.ResponseWriter.Header().Set("Access-Control-Allow-Headers","Access-Control-Allow-Origin,ContentType,Authorization,accept,accept-encoding, authorization, content-type") //header的类型
ctx.ResponseWriter.Header().Set("Access-Control-Max-Age", "1728000")
ctx.ResponseWriter.Header().Set("Access-Control-Allow-Credentials", "true")
	}
	beego.InsertFilter("*", beego.BeforeRouter, FilterGateWay)
}
//路由设置
ns := beego.NewNamespace("/v1",
//	用于跨域请求
beego.NSRouter("*",&controllers.BaseController{},"OPTIONS:Options"),)
beego.AddNamespace(ns)

定义option函数回应预检请求(controller中) 
```
定义option函数回应预检请求(controller中)
```go
// @Title test
// @Description 预检
// @Success 200 {string} "hello world"
// @router / [options]
func (c *BaseController) Options() {
	c.Data["json"] = map[string]interface{}{"status": 200, "message": "ok", "moreinfo": ""}
	c.ServeJSON()
}
```

跨域请求是会先发送一个option请求,该请求如果收到响应(响应内容随便),客户端则才会继续发送请求

以上是关于beego跨域请求配置的主要内容,如果未能解决你的问题,请参考以下文章

用beego开发服务端应用

Beego框架 get请求编写

Beego框架 get请求编写

2019-08-19,beego代码走读,二、请求入口

Beego框架 POST请求接口编写

Beego框架 POST请求接口编写