脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - Golang gin跨域解决方案示例

Golang gin跨域解决方案示例

2022-09-19 16:50Jeff的技术栈 Golang

这篇文章主要为大家介绍了Golang gin跨域解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

gin跨域解决方案

cors1.go

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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,
    })
}

使用中间件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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-跨域解决方案的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/guyouyin123/p/14168035.html

延伸 · 阅读

精彩推荐
  • Golang教你一招完美解决vscode安装go插件失败问题

    教你一招完美解决vscode安装go插件失败问题

    VSCode是我们开发go程序的常用工具,但是安装VSCode成功后,创建一个.go文件居然提示错误了,所以下面下面这篇文章主要给大家介绍了如何通过一招完美解决v...

    defer哈哈3812022-07-20
  • Golanggolang 中的 nil的场景分析

    golang 中的 nil的场景分析

    这篇文章主要介绍了golang 中的 nil,本文通过多种场景分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    追风骚年8392021-04-19
  • Golanggolang gin框架获取参数的操作

    golang gin框架获取参数的操作

    这篇文章主要介绍了golang gin框架获取参数的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    疯狂的鸭血17792021-03-14
  • Golanggolang逐行读取文件的操作

    golang逐行读取文件的操作

    这篇文章主要介绍了golang逐行读取文件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    思维的深度10882021-03-15
  • Golanggolang执行命令获取执行结果状态(推荐)

    golang执行命令获取执行结果状态(推荐)

    这篇文章主要介绍了golang执行命令获取执行结果状态的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧 ...

    jacpy8112020-05-29
  • Golang三种Golang数组拷贝方式及性能分析详解

    三种Golang数组拷贝方式及性能分析详解

    在Go语言中,我们可以使用for、append()和copy()进行数组拷贝。这篇文章主要为大家详细介绍一下这三种方式的具体实现与性能分析,需要的可以参考一下...

    jiaxwu11422022-08-24
  • Golang特殊字符的json序列化总结大全

    特殊字符的json序列化总结大全

    这篇文章主要给大家介绍了关于特殊字符的json序列化的相关资料,通过示例代码分别给大家介绍了关于python 、 rust 、 java 和golang对特殊字符的json序列化操...

    wu_sphinx5842020-05-19
  • Golanggolang实现微信小程序商城后台系统(moshopserver)

    golang实现微信小程序商城后台系统(moshopserver)

    这篇文章主要介绍了golang实现微信小程序商城后台系统(moshopserver),本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要...

    HarlanC4282020-06-05