vue配置proxy跨域 或者后端配置跨域golang

1/24/2022 vue

# vue.config.js 前端端口:8080

# 不配置baseUrl

// 直接配置target 那么浏览器内请求地址是 http://localhost:8080/register 相当于请求 http://127.0.0.1:1016/api/auth/register 不需要配置baseUrl 
// 配置的话会报错相当于http://127.0.0.1:1016/api/auth/api/auth/register 两次api/auth/
module.exports = {
    devServer: {
        proxy: {
            '/': { // 这里只能配'/'或者''  !!!!
                target: 'http://127.0.0.1:1016/api/auth',
                changeOrigin: true,
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 配置baseUrl

axios.defaults.baseURL = '/api/auth' 
1
  • 配置baseUrl 1
module.exports = {
    devServer: {
        proxy: {
            '/api/auth': { // 配置baseUrl了 这里可以配'/' 或者 '' 或者'/api/auth'
                target: 'http://127.0.0.1:1016',
                changeOrigin: true,
            }
        }

    }
}
1
2
3
4
5
6
7
8
9
10
11
  • 配置baseUrl 2
module.exports = {
    devServer: {
        proxy: {
            '/api/auth': { // 配置baseUrl了 这里可以配'/' 或者 '' 或者'/api/auth'
                target: 'http://127.0.0.1:1016/api/auth',
                changeOrigin: true,
                pathRewrite: {
                    '^/api/auth': ''
                }
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 后端配置跨域golang

  • CORSMiddleware.go 中间件
package middleware

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

func CORSMiddleware() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		ctx.Writer.Header().Set("Access-Control-Allow-Origin", "http://localhost:8080")
		ctx.Writer.Header().Set("Access-Control-Max-Age", "86400")
		ctx.Writer.Header().Set("Access-Control-Allow-Method", "*")
		ctx.Writer.Header().Set("Access-Control-Allow-Headers", "*")
		ctx.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
		if ctx.Request.Method == http.MethodOptions {
			ctx.AbortWithStatus(200)
		} else {
			ctx.Next()
		}
	}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • routes.go
package main

import (
	"github.com/gin-gonic/gin"
	"itluv.me/ginessential/controller"
	"itluv.me/ginessential/middleware"
)

func CollectRoute(r *gin.Engine) *gin.Engine {
	r.Use(middleware.CORSMiddleware()) // 使用中间件 !!!
	r.GET("/", controller.TestGet)
	r.POST("/api/auth/register", controller.Register)
	r.POST("/api/auth/login", controller.Login)
	r.GET("/api/auth/info", middleware.AuthMiddleware(), controller.Info)
	return r
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Last Updated: 1/24/2022, 7:03:22 AM