博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang接口解决跨域问题
阅读量:3987 次
发布时间:2019-05-24

本文共 1081 字,大约阅读时间需要 3 分钟。

通过设置响应头,允许跨域请求的方式来解决。

首先编写设置响应头的中间件

package Corsimport (	"net/http"	"github.com/gin-gonic/gin")type Options struct {
Origin string}func CORS(options Options) gin.HandlerFunc {
return func(c *gin.Context) {
if options.Origin != "" {
c.Writer.Header().Set("Access-Control-Allow-Origin", options.Origin) } c.Writer.Header().Set("Access-Control-Max-Age", "86400") c.Writer.Header().Set("Access-Control-Allow-Methods", "*") c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization") c.Writer.Header().Set("Access-Control-Expose-Headers", "*") c.Writer.Header().Set("Access-Control-Allow-Credentials", "true") if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(http.StatusNoContent) } else {
c.Next() } }}

然后使用此中间件,应确保这个中间件在其他中间件之前被使用到,这样所有的响应都会成功设置。

此处以gin框架为例。

GRouter = gin.New()GRouter.Use(Cors.CORS(Cors.Options{
Origin: "*"}))GRouter.Use(gin.Recovery())// 其他中间件

特别注意的是,如果已经在ningx中设置了允许跨域,那么此处就不能再设置星号了。

GRouter.Use(Cors.CORS(Cors.Options{
Origin: ""}))

转载地址:http://pcaui.baihongyu.com/

你可能感兴趣的文章
Tomcat系统架构
查看>>
ArrayList/Vector/Stack底层分析
查看>>
LinkedList源码浅析
查看>>
HashSet源码浅析
查看>>
[JDK1.7]LinkedHashMap源码浅析
查看>>
[JDK1.8]LinkedHashMap源码浅析
查看>>
分布式全局唯一ID生成策略
查看>>
ThreadLocal源码解读
查看>>
一个内存泄漏的例子
查看>>
ThreadLocal缺陷以及处理
查看>>
Docker学习(1):安装-Centos6.X安装Docker
查看>>
HTTP学习
查看>>
数据库系统原理学习
查看>>
Mysql学习
查看>>
为什么String要设计成不可变的?
查看>>
Spring注解驱动开发(1):容器
查看>>
Docker学习(2):介绍
查看>>
npm安装hexo报错
查看>>
经典java集合面试题
查看>>
[BUG] Golang:runnerw.exe: CreateProcess failed with error 216
查看>>