in grpc-web/app/pkg/grpc-web/server.go [26:50]
func NewEcho(gRPCServer *grpc.Server, grpcWebPort string) (*echo.Echo, error) {
echoServer := echo.New()
echoHandler := echoServer
wrappedGrpc := grpcweb.WrapServer(gRPCServer)
//override server handler to intercept grpc-web requests (content-type: application/grpc-web)
echoServer.Server = &http.Server{
Addr: fmt.Sprintf(":%s", grpcWebPort),
Handler: http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
resp.Header().Set("Access-Control-Allow-Headers", "*")
resp.Header().Set("Access-Control-Allow-Origin", "*")
if wrappedGrpc.IsGrpcWebRequest(req) {
wrappedGrpc.ServeHTTP(resp, req)
return
}
echoHandler.ServeHTTP(resp, req)
}),
}
echoServer.HideBanner = true
return echoServer, nil
}