diff --git a/clients/config_client/config_proxy.go b/clients/config_client/config_proxy.go index d8bb991b..87eeef47 100644 --- a/clients/config_client/config_proxy.go +++ b/clients/config_client/config_proxy.go @@ -49,7 +49,7 @@ type ConfigProxy struct { func NewConfigProxy(ctx context.Context, serverConfig []constant.ServerConfig, clientConfig constant.ClientConfig, httpAgent http_agent.IHttpAgent) (IConfigProxy, error) { proxy := ConfigProxy{} var err error - proxy.nacosServer, err = nacos_server.NewNacosServer(ctx, serverConfig, clientConfig, httpAgent, clientConfig.TimeoutMs, clientConfig.Endpoint) + proxy.nacosServer, err = nacos_server.NewNacosServer(ctx, serverConfig, clientConfig, httpAgent, clientConfig.TimeoutMs, clientConfig.Endpoint, nil) proxy.clientConfig = clientConfig return &proxy, err } diff --git a/clients/naming_client/naming_proxy_delegate.go b/clients/naming_client/naming_proxy_delegate.go index 32844d0a..3b0d0b63 100644 --- a/clients/naming_client/naming_proxy_delegate.go +++ b/clients/naming_client/naming_proxy_delegate.go @@ -18,6 +18,7 @@ package naming_client import ( "context" + "github.com/nacos-group/nacos-sdk-go/v2/inner/uuid" "github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_cache" "github.com/nacos-group/nacos-sdk-go/v2/clients/naming_client/naming_grpc" @@ -40,7 +41,17 @@ type NamingProxyDelegate struct { func NewNamingProxyDelegate(ctx context.Context, clientCfg constant.ClientConfig, serverCfgs []constant.ServerConfig, httpAgent http_agent.IHttpAgent, serviceInfoHolder *naming_cache.ServiceInfoHolder) (naming_proxy.INamingProxy, error) { - nacosServer, err := nacos_server.NewNacosServer(ctx, serverCfgs, clientCfg, httpAgent, clientCfg.TimeoutMs, clientCfg.Endpoint) + uid, err := uuid.NewV4() + if err != nil { + return nil, err + } + namingHeader := map[string][]string{ + "Client-Version": {constant.CLIENT_VERSION}, + "User-Agent": {constant.CLIENT_VERSION}, + "RequestId": {uid.String()}, + "Request-Module": {"Naming"}, + } + nacosServer, err := nacos_server.NewNacosServer(ctx, serverCfgs, clientCfg, httpAgent, clientCfg.TimeoutMs, clientCfg.Endpoint, namingHeader) if err != nil { return nil, err } diff --git a/common/nacos_server/nacos_server.go b/common/nacos_server/nacos_server.go index 96948a4f..75e230c9 100644 --- a/common/nacos_server/nacos_server.go +++ b/common/nacos_server/nacos_server.go @@ -58,12 +58,13 @@ type NacosServer struct { contextPath string endpointContextPath string endpointQueryParams string + endpointQueryHeader map[string][]string clusterName string currentIndex int32 ServerSrcChangeSignal chan struct{} } -func NewNacosServer(ctx context.Context, serverList []constant.ServerConfig, clientCfg constant.ClientConfig, httpAgent http_agent.IHttpAgent, timeoutMs uint64, endpoint string) (*NacosServer, error) { +func NewNacosServer(ctx context.Context, serverList []constant.ServerConfig, clientCfg constant.ClientConfig, httpAgent http_agent.IHttpAgent, timeoutMs uint64, endpoint string, endpointQueryHeader map[string][]string) (*NacosServer, error) { severLen := len(serverList) if severLen == 0 && endpoint == "" { return &NacosServer{}, errors.New("both serverlist and endpoint are empty") @@ -80,6 +81,7 @@ func NewNacosServer(ctx context.Context, serverList []constant.ServerConfig, cli vipSrvRefInterMills: 10000, endpointContextPath: clientCfg.EndpointContextPath, endpointQueryParams: clientCfg.EndpointQueryParams, + endpointQueryHeader: endpointQueryHeader, clusterName: clientCfg.ClusterName, contextPath: clientCfg.ContextPath, ServerSrcChangeSignal: make(chan struct{}, 1), @@ -285,7 +287,7 @@ func (server *NacosServer) initRefreshSrvIfNeed(ctx context.Context) { } logger.Infof("nacos address server url: <%s>", urlString) - server.refreshServerSrvIfNeed(urlString) + server.refreshServerSrvIfNeed(urlString, server.endpointQueryHeader) go func() { for { select { @@ -293,21 +295,21 @@ func (server *NacosServer) initRefreshSrvIfNeed(ctx context.Context) { return default: time.Sleep(time.Duration(10) * time.Second) - server.refreshServerSrvIfNeed(urlString) + server.refreshServerSrvIfNeed(urlString, server.endpointQueryHeader) } } }() } -func (server *NacosServer) refreshServerSrvIfNeed(urlString string) { +func (server *NacosServer) refreshServerSrvIfNeed(urlString string, header map[string][]string) { if util.CurrentMillis()-server.lastSrvRefTime < server.vipSrvRefInterMills && len(server.serverList) > 0 { return } var list []string - result := server.httpAgent.RequestOnlyResult(http.MethodGet, urlString, nil, server.timeoutMs, nil) + result := server.httpAgent.RequestOnlyResult(http.MethodGet, urlString, header, server.timeoutMs, nil) list = strings.Split(result, "\n") var servers []constant.ServerConfig diff --git a/common/nacos_server/nacos_server_test.go b/common/nacos_server/nacos_server_test.go index 19130e28..f35f6b3a 100644 --- a/common/nacos_server/nacos_server_test.go +++ b/common/nacos_server/nacos_server_test.go @@ -55,7 +55,8 @@ func buildNacosServer(clientConfig constant.ClientConfig) (*NacosServer, error) clientConfig, &http_agent.HttpAgent{}, 1000, - "") + "", + nil) } func TestNacosServer_InjectSignForNamingHttp_NoAk(t *testing.T) {