当前位置: 代码网 > it编程>前端脚本>Golang > Go Gin 处理跨域问题解决

Go Gin 处理跨域问题解决

2024年06月12日 Golang 我要评论
方式1:jsopn: jsonp请求 主要用来解决跨域问题请注意,jsonp是一种较老的技术,其使用已被现代浏览器支持的更现代的跨源资源共享(cors)机制所取代。如果可能,考虑在你的go gin应用

方式1:jsopn: jsonp请求 主要用来解决跨域问题

请注意,jsonp是一种较老的技术,其使用已被现代浏览器支持的更现代的跨源资源共享(cors)机制所取代。如果可能,考虑在你的go gin应用程序中实现cors,因为它相比jsonp提供了更好的安全性和灵活性。然而,如果您需要支持旧版客户端或cors不可行的特定场景,jsonp仍可作为一种可行的解决方案。

//jsonp请求 主要用来解决跨域问题
//http://127.0.0.1:8080/jsonp?callback=call
//call({"title":"标题-jsonp","desc":"说明-jsonp","content":"内容-jsonp"});
r.get("/jsonp", func(c *gin.context) {
	//实例化一个结构体
	a := &article{
		title:   "标题-jsonp",
		desc:    "说明-jsonp",
		content: "内容-jsonp",
	}
	c.jsonp(200, a)
})

方式2:使用第三方库 github.com/gin-contrib/cors

go gin 框架中处理跨域(cross-origin resource sharing, cors)问题非常直接,可以通过中间件(middleware)来实现。cors 是一种标准机制,允许 web 应用程序在跨域访问资源时,通过设置特定的 http 响应头来放宽浏览器的同源策略限制。下面是如何在 go gin 中配置和启用 cors 中间件

1. 导入第三方库 github.com/gin-contrib/cors

gin 框架自身并未内置 cors 支持,但有一个官方推荐的、与 gin 高度集成的第三方库 github.com/gin-contrib/cors 可以方便地解决这个问题。首先,在你的项目中添加此依赖:

go get -u github.com/gin-contrib/cors

2. 配置 cors 规则

接下来,创建一个 cors.config 结构体实例,用于定义你的 cors 策略。以下是一些常见的配置选项:

// 我一般放到utils或者conf包
package conf

import (
    "github.com/gin-contrib/cors"
)

var corsconfig = cors.config{
    // 允许所有来源(包括子域和端口)。生产环境中应替换为具体的允许域名。
    alloworigins: []string{"*"},
    
    // 允许的http方法列表,如 get、post、put等。默认为["*"](全部允许)
    allowmethods: []string{"get", "post", "put", "patch", "delete", "head", "options"},

    // 允许的http头部列表。默认为["*"](全部允许)
    allowheaders: []string{"origin", "content-length", "content-type", "authorization"},

    // 是否允许浏览器发送cookie。默认为false
    allowcredentials: true,

    // 预检请求(options)的缓存时间(秒)。默认为5分钟
    maxage: 60 * 5,
}

3. 使用 cors 中间件

在 gin 的路由器(r := gin.default() 或 r := gin.new())上应用 cors 中间件:

r := gin.default()

// 使用配置好的cors规则
r.use(cors.new(conf.corsconfig))// 根据包位置需要导入包才能使用

// 注册你的路由和处理函数...

这样,所有经过这个路由器的请求都会先经过 cors 中间件的处理,自动添加相应的 cors 响应头。根据你配置的规则,浏览器会允许符合条件的跨域请求成功执行。

在实际应用中,根据具体的安全需求和交互模式,对 corsconfig 进行适当的调整。例如,将 alloworigins 替换为你允许的特定源(如 "https://example.com"),或仅允许特定的 http 方法和头部。确保你的 cors 策略既满足功能需求,又能有效保护应用程序的安全性。

到此这篇关于go gin 处理跨域问题解决的文章就介绍到这了,更多相关go gin 跨域内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com