andywu1998

Results 4 comments of andywu1998

@Margular 你的问题大概是白名单的配置没写对,把配置文件改成这样,其他的不动,allow-origin改成你想要的,试一下,相对于之前,allow-headers多了一些值。 ``` cors: mode: strict-whitelist # 放行模式: allow-all, 放行全部; whitelist, 白名单模式, 来自白名单内域名的请求添加 cors 头; strict-whitelist 严格白名单模式, 白名单外的请求一律拒绝 whitelist: - allow-origin: http://localhost:8081 allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id allow-methods: POST, GET expose-headers:...

@Margular 需要在这个地方加行日志看一下是否是这里触发的403 。加上https://github.com/flipped-aurora/gin-vue-admin/blob/main/server/middleware/cors.go#L51 加上这行`global.GVA_LOG.Info("forbidden cause by whitelist")`即可 ``` if whitelist == nil && global.GVA_CONFIG.Cors.Mode == "strict-whitelist" && !(c.Request.Method == "GET" && c.Request.URL.Path == "/health") { global.GVA_LOG.Info("forbidden cause by whitelist") c.AbortWithStatus(http.StatusForbidden)...

1. 后端不开跨域,且前端产生跨域(直接请求后端而不是走vite代理)的情况,会出现跨域问题。 后端代码 ``` // Router.Use(middleware.Cors()) // 直接放行全部跨域请求 // Router.Use(middleware.CorsByRules()) // 按照配置的规则放行跨域请求 ``` 前端配置flipped-aurora/gin-vue-admin/web/.env.development ```jsx ENV = 'development' VITE_CLI_PORT = 8080 VITE_SERVER_PORT = 8888 VITE_BASE_API = http://127.0.0.1:8888 VITE_BASE_PATH = http://127.0.0.1...

@Margular 因为前后端用的是同一个域名,并且上ng了,所以没有产生跨域问题。 “你的意思是这种场景我不能够使用严格白名单?”,差不多,主要因为CorsByRules()函数的目的是解决跨域问题。但你这里根本就没有产生跨域(所以没有origin),你用CorsByRules()去解决的话反而403了。 你的这个问题,我个人觉得按照原本那样这两行代码都注释掉就没问题了。 ``` // Router.Use(middleware.Cors()) // 直接放行全部跨域请求 // Router.Use(middleware.CorsByRules()) // 按照配置的规则放行跨域请求 ``` 都注释掉说明后端不支持跨域,所以跨域直接ban掉了,你可以复现一下的。也就是我上面说的“后端不开跨域,且前端产生跨域(直接请求后端而不是走vite代理)的情况,会出现跨域问题。”这种情况。前端配置文件改改就能复现了。