vue配置proxy跨域 或者后端配置跨域golang
garvin 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
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
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
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17