iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >解决golang gin框架跨域及注解的问题
  • 759
分享到

解决golang gin框架跨域及注解的问题

2024-04-02 19:04:59 759人浏览 安东尼
摘要

在golang的路上缓慢前进 Gin框架 跨域问题的解说与方法 代码如下: package main import ( "GitHub.com/gin-Gonic/gin"

golang的路上缓慢前进 Gin框架 跨域问题的解说与方法

代码如下:


package main 
import (
	"GitHub.com/gin-Gonic/gin"
	"awesomeProject/app/app_routers"
	"strings"
	"fmt"
	"net/Http"
) 
 

var (
	engine = gin.Default()
) 
func main() {
 
	// 允许使用跨域请求	 全局中间件
	engine.Use(Cors())
	//router.Use(cors.Default())
	// 传参 设定路由组 允许路由组使用路由
	app_routers.Router(engine)
	// 启动路由 设定端口
	Cors()
	engine.Run(":11000")	//运行启动端口 
} 
//
// 跨域
func Cors() gin.HandlerFunc {
	return func(c *gin.Context) {
		method := c.Request.Method		//请求方法
		origin := c.Request.Header.Get("Origin")		//请求头部
		var headerKeys []string								// 声明请求头keys
		for k, _ := range c.Request.Header {
			headerKeys = append(headerKeys, k)
		}
		headerStr := strings.Join(headerKeys, ", ")
		if headerStr != "" {
			headerStr = fmt.Sprintf("access-control-allow-origin, access-control-allow-headers, %s", headerStr)
		} else {
			headerStr = "access-control-allow-origin, access-control-allow-headers"
		}
		if origin != "" {
			c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
			c.Header("Access-Control-Allow-Origin", "*")		// 这是允许访问所有域
			c.Header("Access-Control-Allow-Methods", "POST, GET, OPTioNS, PUT, DELETE,UPDATE")		//服务器支持的所有跨域请求的方法,为了避免浏览次请求的多次'预检'请求
			// header的类型
			c.Header("Access-Control-Allow-Headers", "Authorization, Content-Length, X-CSRF-Token, Token,session,X_Requested_With,Accept, Origin, Host, Connection, Accept-Encoding, Accept-Language,DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Pragma")
			//				允许跨域设置																										可以返回其他子段
			c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers,Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma,FooBar")		// 跨域关键设置 让浏览器可以解析
			c.Header("Access-Control-Max-Age", "172800")		// 缓存请求信息 单位为秒
			c.Header("Access-Control-Allow-Credentials", "false")		//	跨域请求是否需要带cookie信息 默认设置为true
			c.Set("content-type", "application/JSON")		// 设置返回格式是json
		}
 
		//放行所有OPTIONS方法
		if method == "OPTIONS" {
			c.JSON(http.StatusOK, "Options Request!")
		}
		// 处理请求
		c.Next()		//	处理请求
	}
}

补充:gin框架中间件解决跨域问题

代码如下:


func Cors(c *gin.Context) {
 c.Header("Access-Control-Allow-Origin", "*")
 c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token")
 c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, PATCH, DELETE")
 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")
 //这里是解决Vue那个坑
 method := c.Request.Method
 // 放行所有OPTIONS方法,因为有的模板是要请求两次的
 if method == "OPTIONS" {
  c.AbortWithStatus(http.StatusNoContent)
 }
 // 处理请求
 c.Next()
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文档:

--结束END--

本文标题: 解决golang gin框架跨域及注解的问题

本文链接: https://www.lsjlt.com/news/121681.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 解决golang gin框架跨域及注解的问题
    在golang的路上缓慢前进 Gin框架 跨域问题的解说与方法 代码如下: package main import ( "github.com/gin-gonic/gin" ...
    99+
    2024-04-02
  • Golang gin跨域问题怎么解决
    本文小编为大家详细介绍“Golang gin跨域问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Golang gin跨域问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。g...
    99+
    2023-06-30
  • django框架进阶-解决跨域问题
    在Django框架中,可以通过以下方法解决跨域问题:1. 使用django-cors-headers库:django-cors-he...
    99+
    2023-09-01
    django
  • Golang gin跨域解决方案示例
    目录gin跨域解决方案cors1.gocors2.go使用中间件gin跨域解决方案 cors1.go package middlewares import ( "github.co...
    99+
    2024-04-02
  • Python中flask框架跨域问题的解决方法
    目录一、跨域是什么二、如何解决跨域问题总结一、跨域是什么 从一个域名去请求另一个域名,这个过程称之为跨域。浏览器从一个域名的网页去请求另一个域名的资源,域名、端口、协议有一个不一样,...
    99+
    2024-04-02
  • SpringBoot整合JWT框架,解决Token跨域验证问题
    目录一、传统Session认证  1、认证过程2、存在问题二、JWT简介  1、认证流程2、JWT结构说明 3、JWT使用方式 三、与SpringBoot2整合&...
    99+
    2024-04-02
  • 前端跨域问题解决及七大跨域原理详解
    目录为什么跨域?跨域的时机?同域情况 && 跨域情况?解决跨域的方案JSONPWebSocketCorsNode接口代理NginxpostMessagedocumen...
    99+
    2024-04-02
  • Nginx解决跨域问题
    目录 前言 一、跨域问题 1.什么是跨域  2.CORS 二、Nginx跨域处理 三.补充 前言 这几天出现了一个问题,我们中的一个A系统需要给B系统调用,造成了跨域问题。 一、跨域问题 1.什么是跨域 当一个请求url的协议、域...
    99+
    2023-09-02
    nginx 服务器 开发语言
  • ajax跨域问题以及解决方案
    这期内容当中小编将会给大家带来有关ajax跨域问题以及解决方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。复现Ajax跨域问题做两个简单的小项目复现Ajax跨域问题. 后端语言使用Java首先是一个简单...
    99+
    2023-06-08
  • AJAX请求以及解决跨域问题详解
    目录AJAX 介绍一.原生AJAX请求(GET)二.jQuery AJAX请求(GET 和POST)三.跨域问题的解决四.其他解决跨域问题方法总结AJAX 介绍 AJAX其实就是异步...
    99+
    2024-04-02
  • SpringBoot2如何整合JWT框架解决Token跨域验证问题
    小编给大家分享一下SpringBoot2如何整合JWT框架解决Token跨域验证问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、传统Session认证1、认...
    99+
    2023-06-02
  • Vue解决ajax跨域的问题
    目录(一)什么是跨域(二)axios请求(1)请求方式(2)如何发送axios请求(三)配置代理解决跨域问题(1)方法一:使用vuecli配置代理服务器(2)方法二(一)什么是跨域 ...
    99+
    2023-05-14
    Vue ajax跨域 ajax跨域
  • WebSocket协议的跨域问题及解决方案
    随着前端技术的发展,WebSocket协议在实时通信方面扮演着重要的角色。然而,由于跨域安全策略的限制,使用WebSocket协议进行跨域通信可能会遇到一些问题。本文将介绍WebSocket协议的跨域问题,并提供一些解决方案,同时给出具体的...
    99+
    2023-10-21
    解决方案 跨域问题 WebSocket协议
  • 解决Django cors跨域问题
    Django cors跨域问题 前后端分离项目中的跨域问题 即同源策略 同源策略:同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 19...
    99+
    2024-04-02
  • mybatis plus框架@TableField注解不生效问题及解决方案
    目录一、问题描述二、解决方案三、关于@TableField注解失效原因的思考四、Mapper接口LambdaQuery方法调用过程梳理1、Mapper接口调用实际上使用的是动态代理技...
    99+
    2024-04-02
  • Security框架:如何使用CorsFilter解决前端跨域请求问题
    目录项目情况CORS介绍解决方案项目情况 最近做的pmdb项目是前后端分离的, 由于测试的时候是前端与后端联调,所以出现了跨域请求的问题。 浏览器默认会向后端发送一个Options方...
    99+
    2024-04-02
  • Nginx跨域问题解析与解决
    目录什么是跨域跨域场景解决跨域的四种方式什么是跨域 域: 是指浏览器不能执行其他网站的脚本跨域: 它是由浏览器的 同源策略 造成的,是浏览器对 JavaScript 实施的安全限制,...
    99+
    2022-11-13
    Nginx 跨域 Nginx 跨域问题
  • Nginx如何解决前端跨域问题以及CORS跨域配置
    Nginx如何解决前端跨域问题以及CORS跨域配置,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Nginx的CORS配置,网上太多这配置了,但大家更多的复制粘贴...
    99+
    2023-06-04
  • AJAX的跨域问题解决方案
    目录跨域的概述区别同源与不同源同源策略有什么用?AJAX跨域解决方案方案一、设置响应头方案二、jsonp方案三、代理机制(httpclient)总结跨域的概述 跨域是指从一个域名的网...
    99+
    2022-12-28
    ajax跨域问题以及解决方案 ajax跨域是什么 ajax调用跨域
  • vue的跨域问题怎么解决
    这篇“vue的跨域问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue的跨域问题怎么解决”文章吧。在vue中,跨...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作