@@ -83,13 +83,21 @@ public static void solveHttpRequest(Object obj, Object req, Object resp, Map<Str
8383 try {
8484 boolean enableVersionHeader = ((Config <Boolean >) ConfigBuilder .getInstance ()
8585 .getConfig (ConfigKey .ENABLE_VERSION_HEADER )).get ();
86- if (enableVersionHeader ) {
87- String versionHeaderKey = ((Config <String >) ConfigBuilder .getInstance ()
88- .getConfig (ConfigKey .VERSION_HEADER_KEY )).get ();
86+ String xrayHeader = ((Map <String , String >) requestMeta .get ("headers" )).get ("Xray" );
87+ if (enableVersionHeader || xrayHeader != null ) {
8988 Method setHeaderMethod = ReflectUtils .getDeclaredMethodFromSuperClass (resp .getClass (),
9089 "setHeader" , new Class []{String .class , String .class });
9190 if (setHeaderMethod != null ) {
92- setHeaderMethod .invoke (resp , versionHeaderKey , AgentConstant .VERSION_VALUE );
91+ if (enableVersionHeader ) {
92+ String versionHeaderKey = ((Config <String >) ConfigBuilder .getInstance ()
93+ .getConfig (ConfigKey .VERSION_HEADER_KEY )).get ();
94+ setHeaderMethod .invoke (resp , versionHeaderKey , AgentConstant .VERSION_VALUE );
95+ }
96+ if (xrayHeader != null ) {
97+ String reqId = String .valueOf (EngineManager .getAgentId ()) + "."
98+ + UUID .randomUUID ().toString ().replaceAll ("-" , "" );
99+ setHeaderMethod .invoke (resp , "dt-request-id" , reqId );
100+ }
93101 }
94102 }
95103 } catch (Throwable ignore ) {
@@ -141,6 +149,8 @@ public static Map<String, String> parseRequestHeaders(Object req, Enumeration<?>
141149 String val = (String ) getHeaderMethod .invoke (req , key );
142150 if ("content-type" .equalsIgnoreCase (key )) {
143151 key = "Content-Type" ;
152+ } else if ("xray" .equalsIgnoreCase (key )) {
153+ key = "Xray" ;
144154 }
145155 headers .put (key , val );
146156 } catch (Throwable ignore ) {
0 commit comments