当前位置: 萬仟网 > IT编程>脚本编程>Go语言 > golang-在gin中cookie跨域设置(配合ajax)

golang-在gin中cookie跨域设置(配合ajax)

2018年04月13日 06:36  | 萬仟网IT编程  | 我要评论

1.当我在golang中,在前后端分离的情况下使用cookies时发现,跨域没有被允许。代码如下:

func AccessJsMiddleware() gin.HandlerFunc {
   return func(c *gin.Context) {
      w := c.Writer
      // 处理js-ajax跨域问题
      w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域
      w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, POST")
      w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
      w.Header().Add("Access-Control-Allow-Headers", "Access-Token")
      c.Next()
   }
}

 1.1.这里在程序启动时增加了一个跨域中间件,使用如下

api := rounter.Group("/api")
api.Use(AccessJsMiddleware())

以上设置ajax请求使用cookie时会被拒绝


2.然后我就进行了修改,解决了该问题

2.1.ajax请求增加一个设置

xhrFields: {
 withCredentials: true
},

 2.2.然后修改了跨域中间件的设置

func AccessJsMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		w := c.Writer
		r:=c.Request
		// 处理js-ajax跨域问题
		w.Header().Set("Access-Control-Allow-Credentials", "true")
		w.Header().Set("Access-Control-Allow-Origin", r.Header.Get("Origin")) 
		w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, POST")
		w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
		w.Header().Add("Access-Control-Allow-Headers", "Access-Token")
		c.Next()
	}
}

 以上就解决了cookie跨域的问题啦,觉得有用就点一个推荐和关注啦,毕竟我也是一个害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的小公举。

 



 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

  • Go学习笔记之Map

    Go学习笔记之Map Map 引用类型,哈希表。map的key必须可以比较相等,除了slice, map, function的内建类型都可以作为ke... [阅读全文]
  • QA:无重复字符的最长子串

    QA:无重复字符的最长子串

    无重复字符的最长字串 leetcode地址:https://leetcode-cn.com/problems/longest-substring-w... [阅读全文]
  • [系列] Go gRPC 调试工具

    [TOC] 概述 最近这段时间工作挺忙的,发现已经 3 周没更文了... 感谢你们还在,今天给大家分享一款 gRPC 的调试工具。 进入正题。 当我... [阅读全文]
  • GO基础之接口

    面向对象语言中,接口用于定义对象的行为。接口只指定对象应该做什么,实现这种行为的方法(实现细节)是由对象来决定。 ... [阅读全文]
  • go-面向对象编程(上)

    一个程序就是一个世界,有很多对象(变量) Golang 语言面向对象编程说明 1) Golang 也支持面向对象编程(OOP),但是和传统的面向对象... [阅读全文]
  • GO基础之异常处理

    Go语言中没有try...catch;假设我们正在尝试打开一个文件,文件系统中不存在这个文件。这是一个异常情况,它表示为一个错误 ... [阅读全文]
  • GO基础之结构体

    继承是传统面向对象编程中三大特征之一。用于描述两个类之间的关系。一个类(子类、派生类)继承于另一个类(父类、超类) ... [阅读全文]
  • GO基础之切片

    GO基础之切片

    当使用 append追加元素到切片时,如果容量不够(也就是(cap-len)== 0),Go就会创建一个新的内存地址来储存元素(该方式效率较低) .... [阅读全文]
  • go map数据结构和源码详解

    go map数据结构和源码详解

    [TOC] 1. 前言 本文以go1.12.5版本分析,map相关的源码在runtime包的map开头的几个文件中,主要为map.go。 go的ma... [阅读全文]
  • GO基础之Map

    map的长度是不固定的,和slice-样可以扩展。内置的len()函数同样适用于map,返回map拥有的键值对的数量。但是map不能通过cap()函... [阅读全文]

◎已有 0 人评论

Copyright © 2019  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com