diff --git a/core/transport/header_transport.go b/core/transport/header_transport.go new file mode 100644 index 00000000..6c25d8bc --- /dev/null +++ b/core/transport/header_transport.go @@ -0,0 +1,17 @@ +package transport + +var customHeaderKeyStore = contextKeyStore{ + keyArr: make([]string, 0), +} + +// SetHeaderKeys overrides custom keys with provided array. +func SetHeaderKeys(arr []string) { + //length := len(arr) + customHeaderKeyStore.keyArr = arr + //customHeaderKeyStore.length = length +} + +// CustomHeaderKeys returns custom content key list +func CustomHeaderKeys() []string { + return customHeaderKeyStore.keyArr +} diff --git a/server/egin/interceptor.go b/server/egin/interceptor.go index f922e9da..5fa5b40b 100644 --- a/server/egin/interceptor.go +++ b/server/egin/interceptor.go @@ -157,6 +157,11 @@ func (c *Container) defaultServerInterceptor() gin.HandlerFunc { for _, key := range loggerKeys { if value := tools.ContextValue(ctx.Request.Context(), key); value != "" { fields = append(fields, elog.FieldCustomKeyValue(key, value)) + } + } + + for _, key := range transport.CustomHeaderKeys() { + if value := tools.ContextValue(ctx.Request.Context(), key); value != "" { // x-expose 需要在这里获取 if strings.HasPrefix(key, eapp.EgoHeaderExpose()) { // 设置到ctx response header