beego 解决跨域问题 | 臭大佬

臭大佬 2020-08-22 20:33:38 2669
Go 
简介 beego 解决跨域问题

起因

前后端分离的项目,由于浏览器的同源策略,很容易导致跨域问题,前端在请求接口的时候报如下错误:

has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present

解决

其实跨域问题前后端两端都可以解决,这里讨论以gobeego框架的解决方法。

beego实现方式

我们可以以中间件的形式去统一解决,如把跨域方法封装到中间件中,在main.go执行时就加载方法:

跨域解决代码:

import (
    "github.com/astaxie/beego/plugins/cors"
)

/**
    添加解决跨域请求问题,文件下载文件夹,支持表单伪造PUT,DELETE,PATCH,OPTIONS请求
 */
func CorsDomain() {
    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", "Access-Control-Allow-Headers", "Content-Type"},
        ExposeHeaders:    []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
        AllowCredentials: true,
    }))
}

效果

未加跨域方法前:

添加后: