首页 > 其他分享 >你是如何解决go语言框架 gin跨域问题 的 ?

你是如何解决go语言框架 gin跨域问题 的 ?

时间:2024-07-18 09:51:22浏览次数:8  
标签:Control 跨域 Allow Access context go gin

我们在做前后端分离的项目,时常会听到跨域问题。经常看到有人的文章标题写着: 前端支持跨域,但显然也只是个噱头而已。

跨域的概念,本人才疏学浅,就不多说了。大家有兴趣可以搜搜相关的介绍。

今天就聊一聊在go的web框架gin里面怎么解决跨域问题,以及在实践过程中踩的坑。大概已经抄了mdnice一小部分功能了,差个图床和目录就差不多好了。它大概长这样:

图片

还不太完善,有一些样式也没优化到位,说实话还是mdnice好用更多

 

解决方案

在go中的gin需要跨域中间件,使用Use()可以把它看中间件.

在入口文件写入

func Cors() gin.HandlerFunc {
    return func(context *gin.Context) {
        method := context.Request.Method
        context.Header("Access-Control-Allow-Origin", "*")
        context.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token")
        context.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
        context.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
        context.Header("Access-Control-Allow-Credentials", "true")
        if method == "OPTIONS" {
            context.AbortWithStatus(http.StatusNoContent)
        }
        context.Next()
    }
}

在main.go入口文件

func main() {

    router := gin.Default()

    router.Use(Cors()) //解决跨域

    gin.SetMode(gin.DebugMode) //开启dug
    router.Run(":8000") //映射端口
}

重新执行再次尝试请求即可

 

参考链接:https://blog.csdn.net/weixin_58425109/article/details/122624951

更多相关Go语言的技术文章或视频教程,请关注本公众号获取并查看,感谢你的支持与信任!

标签:Control,跨域,Allow,Access,context,go,gin
From: https://www.cnblogs.com/cheyunhua/p/18308803

相关文章

  • 【OCPP】ocpp1.6协议第5.5章节Clear Charging Profile的介绍及翻译
    目录5.5清除充电配置ClearChargingProfile-概述ClearChargingProfile请求ClearChargingProfile响应操作流程适用场景5.5清除充电配置ClearChargingProfile-原文译文5.5清除充电配置ClearChargingProfile-概述OCPP1.6协议中的第5.5章节主要讲的是“Cl......
  • njs最详细的入门手册:Nginx JavaScript Engine
    原文链接:https://hi.imzlh.top/2024/07/08.cgi关于njs首先,njs似乎在国内外都不受关注,资料什么的只有官网参考手册,出了个问题只能看到GithubIssue所以,这篇文章将我的探索过程展示给大家,njs对于可用存储空间较小的设备真的很友好,相比较于NodeJS、Deno这种80M起步的运行环境真的......
  • django“晋农进商”农产品跨境电子商务平台-计算机毕业设计源码60211
    摘要在全球化的浪潮下,电子商务已成为连接各国市场、促进贸易往来的重要桥梁。特别是在农产品领域,跨境电子商务平台的崛起不仅打破了地域限制,也为农民和消费者提供了前所未有的便利与机遇。在这一背景下,“晋农进商”农产品跨境电子商务平台应运而生,旨在将山西乃至全国的优质农......
  • go embed http server
    packagemainimport( "embed" "io/fs" "net/http")//go:embedall:distvarassetsembed.FSfuncAssets()(fs.FS,error){ returnfs.Sub(assets,"dist")}funcmain(){ assets,_:=Assets() //Usethefil......
  • LDAP应用篇(3)Nginx接入
    实验环境:OracleLinuxR8在搞Nginx比较错愕的是,居然Nginx并未内置对LDAP的支持,需要单独编译。然而yum安装的nginx并不支持导入模块,不得不再次温习一下编译安装Nginx的路数了。下载组件从github中下载组件的源代码:cd~&&gitclonehttps://github.com/kvspb/nginx-......
  • 从零手写实现 nginx-31-load balance 负载均衡介绍
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • golang 无缓冲区通道的 range 操作
     对一个无缓冲通道(chan)进行range操作意味着想要迭代并消费通道中的所有值。但是,由于无缓冲通道的特性,这种操作具有特定的行为和潜在的副作用,主要体现在以下几点: 阻塞行为:当你开始对无缓冲通道进行range操作时,每次循环迭代都会尝试从通道接收一个值。如果通......
  • 使用 goyacc 工具構建語法分析程序
    使用goyacc工具構建語法分析程序前言本文仅讨论goyacc工具的应用,而不是编译原理的基础知识.故想要流畅地阅读本文,需要首先理解以下问题:词法分析,语法分析分别是什么?正规文法,上下文无关文法,上下文有关文法有何区别?终结符,非终结符各指代什么?想要更好地......
  • 使用Django框架实现音频上传功能
    数据库设计(models.py)classMusic(models.Model):"""音乐"""name=models.CharField(verbose_name="音乐名字",max_length=32)singer=models.CharField(verbose_name="歌手",max_length=32)#本质上数据库也是Cha......
  • Google Earth Engine(GEE)——北京地区简单的除云影像展示(云量小于10的影像展示)
    结果 函数:函数: ee.Algorithms.Landsat.simpleCloudScore(image)Computesasimplecloud-likelihoodscoreintherange[0,100]using......