专栏首页Happy的分享beego解决跨域问题:options请求、axios post请求跨域问题

beego解决跨域问题:options请求、axios post请求跨域问题

根据网上的资料配置,还是未能解决跨域的问题,错误如下:

has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

网上的配置如下:

	beego.InsertFilter("/*", beego.BeforeRouter, cors.Allow(&cors.Options{
		AllowAllOrigins:  true,
		AllowMethods:     []string{"*"},
		AllowHeaders:     []string{"*"},
		AllowCredentials: true,
	}))

正确的配置(2020-05-10 依然不能完全解决)

	beego.InsertFilter("/*", beego.BeforeRouter, cors.Allow(&cors.Options{
		AllowOrigins:     []string{"*"},
		AllowMethods:     []string{"*"},
		AllowHeaders:     []string{"*"},
		AllowCredentials: true,
	}))

2020-05-10:上面的配置,在碰到options请求的时候,依然还是会提示跨域问题:

Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response

The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

等等报错。

解决

既然用这些配置没法解决,那就自己撸一个吧。

cors_filter.go

var success = []byte("SUPPORT OPTIONS")

var corsFunc = func(ctx *context.Context) {
	origin := ctx.Input.Header("Origin")
	ctx.Output.Header("Access-Control-Allow-Methods", "OPTIONS,DELETE,POST,GET,PUT,PATCH")
	ctx.Output.Header("Access-Control-Max-Age", "3600")
	ctx.Output.Header("Access-Control-Allow-Headers", "X-Custom-Header,accept,Content-Type,Access-Token")
	ctx.Output.Header("Access-Control-Allow-Credentials", "true")
	ctx.Output.Header("Access-Control-Allow-Origin", origin)
	if ctx.Input.Method() == http.MethodOptions {
		// options请求,返回200
		ctx.Output.SetStatus(http.StatusOK)
		_ = ctx.Output.Body(success)
	}
}

func init() {
	beego.InsertFilter("/*", beego.BeforeRouter, corsFunc)
}
复制代码

加了这个配置之后,跨域总算解决了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【快学springboot】4.接口参数校验

    在开发接口的时候,参数校验是必不可少的。参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定。如果不对入参做校验,很有可能会因为一些不合法的...

    Happyjava
  • MySQL实现主从复制功能

    MySQL安装参考之前的文章https://www.jianshu.com/p/452aa99c7476有讲解。

    Happyjava
  • 解决IDEA在软件里修改了内存后打不开的问题

    Happyjava
  • 探索然后执行:通过因子化元强化学习进行无奖励的适应(CS)

    我们寻求通过利用不同任务和环境之间的共享结构来有效地学习。例如,即使食材可能会改变位置,但是烹饪在不同的厨房都是相似的。原则上,元强化学习方法可以利用这种共享结...

    孙孙孙
  • Access to XMLHttpRequest at <url> from origin <url> has been blocked by CORS policy【php】

    Access to XMLHttpRequest at 'http://localhost:8080/api/user/login' from origin '...

    sinnoo
  • (Python)用Mask R-CNN检测空闲车位

    我住在一个大城市。 但就像大多数城市一样,在这里寻找停车位总是一件很困难的事情。 停车位通常很快被抢走,即使你有一个专门的停车位,朋友们来拜访你也是一件很困难的...

    AI研习社
  • 分布式一致性算法Paxos

    最近在学习zookeeper原理的时候了解到了paxos算法,看了几篇文章之后还是感觉有些迷糊,后来看了知行学社的paxos视频才对这个算法有了一定的了解,...

    程序员历小冰
  • 重磅!李飞飞 CS231n 最全学霸笔记精炼版来了

    斯坦福大学教授李飞飞拥有众多头衔,毫无疑问是人工智能领域的大 IP。她在斯坦福开设的机器视觉课程 CS231n 一直以来都是王牌课程,惠及数十万的人工智能爱好者...

    OpenCV学堂
  • LeetCode 1165. 单行键盘(哈希)

    我们可以按从左到右的顺序,用一个长度为 26 的字符串 keyboard (索引从 0 开始,到 25 结束)来表示该键盘的键位布局。

    Michael阿明
  • ViewModel 源码分析

    从图可以看出来,ViewModel 与 LiveData 和 Paging 是谷歌新组件,同时它是 android.arch.lifecycle 包里面的类,可...

    ppjun

扫码关注云+社区

领取腾讯云代金券