Я столкнулся с проблемой, которая была добавлена в мои SetMiddlewares в промежуточном программном обеспечении golang как
.
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept},
}))
У меня есть соединение GRPC и прокси-сервер, который я реализовал следующим образом
e := echo.New()
e.Logger.SetLevel(log.DEBUG)
e.Validator = new(bindings.Validator)
// grpc connection group v1 and use middle for cors
grpcAPI := e.Group("/api/v1", middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowMethods: []string{http.MethodGet, http.MethodPost},
}))
e.Group("/:route/api/v3", middleware.Proxy(middleware.NewRandomBalancer(utils.ProxyTargets(utils.TJXAPI, e))))
// Set middlewares
middlewares.SetMainMiddleware(e)
// Set main routes
api.MainGroup(e)
// Set group routes
api.V1Group(grpcAPI)
теперь в моем браузере установленный мной запрос cors *, но как только прокси-сервер создает запрос, Cross Origin имеет несколько источников, которые включают *, http://localhost:3000 из браузера, что приводит к сбою запроса для grpc и прокси-сервер.
Я попытался отфильтровать их, добавив оператор switch для отдельного использования cors на промежуточном программном обеспечении, но моя проблема заключается в том, как отфильтровать префиксы или путь, которые я указал в группе, а также
e := echo.New()
e.Logger.SetLevel(log.DEBUG)
e.Validator = new(bindings.Validator)
переменная e настроена на основное промежуточное ПО, это
func SetMainMiddlewareForGrpc(e *echo.Echo) {
e.Use(middleware.RequestID())
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowMethods: []string{http.MethodGet, http.MethodPost, http.MethodOptions},
}))
}
Я пытаюсь создать cors для отдельного запроса для grpc и прокси-сервера, но если кто-то попытается сделать это аккуратно и оптимизировать, будет очень признателен за вашу помощь.