zoukankan      html  css  js  c++  java
  • goalng踩坑之前后端跨域问题

    我写的后端是gin,前端同事用vue开发的,第一次联调的时候遇到了跨域问题,这个是前后端分离最常见的需要处理的问题其实处理方式很简单,网上都很多的教程:通过定义一个跨域中间件,实现在请求头消息中加入允许跨域的字段就可以了。但是在我使用了很多方式包括gin自带的cors中间件,和网上的那些自定义中间件(其实具体实现抖差不多的)之后问题依然没有解决。

    注意::

      不能使用”*“来匹配所有的域允许访问,必须指定前端服务的ip:port才行:

    func Cors() gin.HandlerFunc  {
    	return func(context *gin.Context) {
    		context.Writer.Header().Set("Access-Control-Allow-Origin","http://192.168.xx.xx:8888")   //这是前端服务的地址,注意这一行不使用“*”
    		context.Writer.Header().Set("Access-Control-Max-Age","86400")
    		context.Writer.Header().Set("Access-Control-Allow-Methods", "*")
    		context.Writer.Header().Set("Access-Control-Allow-Headers", "*")
    		context.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
    		if context.Request.Method == "OPTIONS" {
    			context.AbortWithStatus(http.StatusOK)
    		}
    		context.Next()
    	}
    }
    

      

    强烈推荐阅读CORS原理:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

  • 相关阅读:
    网络流初步——增广路算法(EK)模板
    求大组合数
    RMQ问题
    欧拉函数
    [LintCode] Minimum Path Sum
    [LintCode] Unique Paths II
    [LintCode] Unique Paths
    [LintCode] Flip Bits
    [LintCode] O(1) Check Power of 2
    [LintCode] Count 1 in Binary
  • 原文地址:https://www.cnblogs.com/cfc-blog/p/13160895.html
Copyright © 2011-2022 走看看