【前后端分离开发】go语言自定义Header处理Angular-Http OPTIONS(预检验)请求,跨域请求,向服务端发送cookies

中间件解决跨域问题

中间件的意思是,我们运行博客后,用户访问一个链接,程序会最终执行这个链接对应的控制器。在执行控制器里面的代码之前运行的其他代码,我们就叫做中间件。

在 CORS-跨域资源共享 中,用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。

出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。

添加一个中间件cors跨域处理options请求(同时允许把Cookie包含在请求中发到服务器):

func Cors(ctx iris.Context) {
	ctx.Header("Access-Control-Allow-Credentials", "true") //支持cookie跨域
	ctx.Header("Access-Control-Allow-Origin", "*")//允许所有域名的访问
	//拦截OPTIONS请求
	if ctx.Request().Method == "OPTIONS" {
		//支持GET,POST,PUT,DELETE,PATCH,OPTIONS这几种请求方法。
		ctx.Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,PATCH,OPTIONS")
		//支持Content-Type, Api, Accept, Authorization, Version, Token这些字段
		ctx.Header("Access-Control-Allow-Headers", "Content-Type, Api, Accept, Authorization, Version, Token")
		//最后返回200状态,表示这个请求执行成功。
		ctx.StatusCode(200)
		return
	}
	ctx.Next()
}

中间件使用方法

app := iris.New()
app.Use(Cors)

跨域资源共享 CORS 详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值