Go语言gin框架+gorm框架项目:后端解决跨域问题

文章讨论了浏览器的同源策略导致的跨域问题,以及在Golang中如何处理这个问题。通过设置CORS(跨域资源共享)头部的中间件,可以允许不同域名、IP或端口的客户端访问服务。文章提供了添加跨域中间件的示例代码,并指出这将使浏览器能够显示后端返回给前端的结果。
摘要由CSDN通过智能技术生成

1.为什么解决跨域问题?

跨域问题是指在浏览器中,当一个客户端JavaScript脚本向不同域名或端口的服务器发起HTTP请求时,浏览器会出于安全考虑阻止该请求。这是由于同源策略所导致的。

Golang 通常用于编写 Web API 服务,因此也需要处理跨域请求。如果您的 Golang 项目用于提供服务给不同的域名、IP 或端口的客户端,则可能会遇到跨域问题。

解决跨域问题可以使客户端能够从不同的域名或端口访问您的 Golang 服务,并确保数据能够正常传输。一种解决方案是在服务器端设置 CORS(跨域资源共享)头部,通过这种方式告诉浏览器允许该请求。还有其他一些解决方案,例如 JSONP 和反向代理等,但最常见的方法是使用 CORS。

2.解决方法

1.添加跨域的中间件

 代码:

package middleware

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

// 处理跨域请求,支持options访问
func Cors() gin.HandlerFunc {
	return func(c *gin.Context) {
		method := c.Request.Method
		origin := c.Request.Header.Get("Origin")
		c.Header("Access-Control-Allow-Origin", origin)
		c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id")
		c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT")
		c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
		c.Header("Access-Control-Allow-Credentials", "true")

		// 放行所有OPTIONS方法
		if method == "OPTIONS" {
			c.AbortWithStatus(http.StatusNoContent)
		}
		// 处理请求
		c.Next()
	}
}

2.在接口的路径上面配置中间件

 3.结果展示

浏览器上可以显示后端返回给前端的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值