Golang gin跨域解决方案示例

 更新时间:2022年04月15日 12:35:17   作者:Jeff的技术栈  
这篇文章主要为大家介绍了Golang gin跨域解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

gin跨域解决方案

cors1.go

package middlewares
import (
	"github.com/gin-gonic/gin"
	"net/http"
)
func Cors() gin.HandlerFunc {
	return func(c *gin.Context) {
		method := c.Request.Method
		origin := c.Request.Header.Get("Origin")
		if origin != ""{
			c.Header("Access-Control-Allow-Origin", origin)
			//主要设置Access-Control-Allow-Origin
			c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
			c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
			c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type")
			c.Header("Access-Control-Allow-Credentials", "false")
			c.Set("content-type", "application/json")
		}
		if method == "OPTIONS"{
			c.AbortWithStatus(http.StatusNoContent)
		}
		c.Next()
	}
}

cors2.go

func Cors() gin.HandlerFunc {
	return cors.New(cors.Config{
		AllowAllOrigins: false,
		AllowOrigins:    nil,
		AllowOriginFunc: func(origin string) bool {
			return true
		},
		AllowMethods:     []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"},
		AllowHeaders:     []string{"Authorization", "ts", "Accept", "Origin", "DNT", "X-CustomHeader", "Keep-Alive", "User-Agent", "X-Requested-With", "If-Modified-Since", "Cache-Control", "Content-Type", "Content-Range", "Range"},
		AllowCredentials: true,
		MaxAge:           10 * time.Minute,
	})
}

使用中间件

package router
import (
    "github.com/gin-gonic/gin"
    "goproejct/controllers"
    "goproejct/middlewares"//引入中间件goproject是项目名 根据自己情况
)
func InitRouter() {
    router := gin.Default()
    router.Use(Cors())//使用中间件
    v1 := router.Group("v1")
    {
        v1.POST("/login", controllers.Login)
        v1.POST("/regist", controllers.Regist)
    }
    router.Run(":8000")
}

以上就是Golang gin跨域解决方案的详细内容,更多关于gin-跨域解决方案的资料请关注脚本之家其它相关文章!

相关文章

  • go语言 http模型reactor示例详解

    go语言 http模型reactor示例详解

    这篇文章主要介绍了go语言 http模型reactor,接下来看一段基于reactor的示例,这里运行通过 go run main.go,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Golang使用gofumpt进行代码格式化

    Golang使用gofumpt进行代码格式化

    这篇文章主要为大家详细介绍了Golang如何使用gofumpt进行代码格式化,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • Golang中正则表达式语法及相关示例

    Golang中正则表达式语法及相关示例

    正则表达式是一种用于匹配和操作文本的强大工具,它使用特殊的字符和语法来定义模式,下面这篇文章主要给大家介绍了关于Golang中正则表达式语法及相关示例的相关资料,需要的朋友可以参考下
    2024-05-05
  • go语言基础语法示例

    go语言基础语法示例

    这篇文章主要介绍了go语言基础语法示例,介绍了go语言较为全面的基础知识,具有一定参考价值,需要的可以了解下。
    2017-11-11
  • Golang内存对齐的规则及实现

    Golang内存对齐的规则及实现

    本文介绍了Golang内存对齐的规则及实现,通过合理的内存对齐,可以提高程序的执行效率和性能,通过对本文的阅读,读者可以更好地理解Golang内存对齐的原理和技巧,并应用于实际编程中
    2023-08-08
  • Go语言七篇入门教程七GC垃圾回收三色标记

    Go语言七篇入门教程七GC垃圾回收三色标记

    这篇文章主要为大家介绍了Go语言教程关于GC垃圾回收三色标记的示例详解,本篇文章是Go语言七篇入门教程系列文章,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • go开发alertmanger实现钉钉报警

    go开发alertmanger实现钉钉报警

    本文主要介绍了go开发alertmanger实现钉钉报警,通过自己的url实现alertmanager的钉钉报警,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • golang实现并发控制的方法和技巧

    golang实现并发控制的方法和技巧

    golang 是一门支持并发的编程语言,它提供了 goroutine 和 channel 等强大的特性,让我们可以轻松地创建和管理多个执行单元,实现高效的任务处理,在本文中,我们将介绍一些 golang 的并发控制的方法和技巧,希望对你有所帮助
    2024-03-03
  • Golang switch语句的具体使用

    Golang switch语句的具体使用

    switch 语句提供了一种简洁的方式来执行多路分支选择,本文主要介绍了Golang switch语句的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • golang 对私有函数进行单元测试的实例

    golang 对私有函数进行单元测试的实例

    这篇文章主要介绍了golang 对私有函数进行单元测试的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05

最新评论