fix: route cors origin

This commit is contained in:
Jonas Kaninda
2024-10-29 10:35:31 +01:00
parent 9f14c2fa08
commit ac6cba246a
3 changed files with 27 additions and 22 deletions

View File

@@ -34,17 +34,16 @@ func CORSHandler(cors Cors) mux.MiddlewareFunc {
w.Header().Set(k, v)
}
//Update Origin Cors Headers
for _, origin := range cors.Origins {
if origin == r.Header.Get("Origin") {
w.Header().Set("Access-Control-Allow-Origin", origin)
if allowedOrigin(cors.Origins, r.Header.Get("Origin")) {
// Handle preflight requests (OPTIONS)
if r.Method == "OPTIONS" {
w.Header().Set(accessControlAllowOrigin, r.Header.Get("Origin"))
w.WriteHeader(http.StatusNoContent)
return
} else {
w.Header().Set(accessControlAllowOrigin, r.Header.Get("Origin"))
}
}
// Handle preflight requests (OPTIONS)
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusNoContent)
return
}
// Pass the request to the next handler
next.ServeHTTP(w, r)
})
@@ -118,3 +117,13 @@ func (heathRoute HealthCheckRoute) HealthReadyHandler(w http.ResponseWriter, r *
return
}
}
func allowedOrigin(origins []string, origin string) bool {
for _, o := range origins {
if o == origin {
return true
}
continue
}
return false
}

View File

@@ -43,19 +43,17 @@ func (proxyRoute ProxyRoute) ProxyHandler() http.HandlerFunc {
for k, v := range proxyRoute.cors.Headers {
w.Header().Set(k, v)
}
//Update Origin Cors Headers
for _, origin := range proxyRoute.cors.Origins {
if origin == r.Header.Get("Origin") {
w.Header().Set(accessControlAllowOrigin, origin)
if allowedOrigin(proxyRoute.cors.Origins, r.Header.Get("Origin")) {
// Handle preflight requests (OPTIONS)
if r.Method == "OPTIONS" {
w.Header().Set(accessControlAllowOrigin, r.Header.Get("Origin"))
w.WriteHeader(http.StatusNoContent)
return
} else {
w.Header().Set(accessControlAllowOrigin, r.Header.Get("Origin"))
}
}
// Handle preflight requests (OPTIONS)
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusNoContent)
return
}
// Parse the target backend URL
targetURL, err := url.Parse(proxyRoute.destination)
if err != nil {

View File

@@ -40,8 +40,6 @@ func (gatewayServer GatewayServer) Initialize() *mux.Router {
// Add rate limit middleware to all routes, if defined
r.Use(limiter.RateLimitMiddleware())
}
// Add the errorInterceptor middleware
//r.Use(middleware.ErrorInterceptor)
for _, route := range gateway.Routes {
if route.Path != "" {
blM := middleware.BlockListMiddleware{