mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Poc/strip client headers on 304 (#5574)
To reduce traffic returned on 304.
This commit is contained in:
		
							parent
							
								
									1173b664da
								
							
						
					
					
						commit
						b6f1929efb
					
				| @ -102,6 +102,7 @@ exports[`should create default config 1`] = ` | ||||
|       "responseTimeWithAppNameKillSwitch": false, | ||||
|       "scheduledConfigurationChanges": false, | ||||
|       "strictSchemaValidation": false, | ||||
|       "stripClientHeadersOn304": false, | ||||
|     }, | ||||
|     "externalResolver": { | ||||
|       "getVariant": [Function], | ||||
|  | ||||
| @ -248,6 +248,11 @@ export default class FeatureController extends Controller { | ||||
| 
 | ||||
|         if (etag === userVersion) { | ||||
|             res.status(304); | ||||
|             if (this.flagResolver.isEnabled('stripClientHeadersOn304')) { | ||||
|                 res.getHeaderNames().forEach((header) => | ||||
|                     res.removeHeader(header), | ||||
|                 ); | ||||
|             } | ||||
|             res.end(); | ||||
|             return; | ||||
|         } else { | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import { Response } from 'express'; | ||||
| import Controller from '../controller'; | ||||
| import { IUnleashConfig, IUnleashServices } from '../../types'; | ||||
| import { IFlagResolver, IUnleashConfig, IUnleashServices } from '../../types'; | ||||
| import ClientInstanceService from '../../services/client-metrics/instance-service'; | ||||
| import { Logger } from '../../logger'; | ||||
| import { IAuthRequest } from '../unleash-types'; | ||||
| @ -24,6 +24,8 @@ export default class ClientMetricsController extends Controller { | ||||
| 
 | ||||
|     metricsV2: ClientMetricsServiceV2; | ||||
| 
 | ||||
|     flagResolver: IFlagResolver; | ||||
| 
 | ||||
|     constructor( | ||||
|         { | ||||
|             clientInstanceService, | ||||
| @ -44,6 +46,7 @@ export default class ClientMetricsController extends Controller { | ||||
|         this.clientInstanceService = clientInstanceService; | ||||
|         this.openApiService = openApiService; | ||||
|         this.metricsV2 = clientMetricsServiceV2; | ||||
|         this.flagResolver = config.flagResolver; | ||||
| 
 | ||||
|         this.route({ | ||||
|             method: 'post', | ||||
| @ -90,6 +93,11 @@ export default class ClientMetricsController extends Controller { | ||||
|                 ); | ||||
| 
 | ||||
|                 await this.metricsV2.registerClientMetrics(data, clientIp); | ||||
|                 if (this.flagResolver.isEnabled('stripClientHeadersOn304')) { | ||||
|                     res.getHeaderNames().forEach((header) => | ||||
|                         res.removeHeader(header), | ||||
|                     ); | ||||
|                 } | ||||
|                 res.status(202).end(); | ||||
|             } catch (e) { | ||||
|                 res.status(400).end(); | ||||
|  | ||||
| @ -29,7 +29,8 @@ export type IFlagKey = | ||||
|     | 'featureSearchAPI' | ||||
|     | 'featureSearchFrontend' | ||||
|     | 'scheduledConfigurationChanges' | ||||
|     | 'detectSegmentUsageInChangeRequests'; | ||||
|     | 'detectSegmentUsageInChangeRequests' | ||||
|     | 'stripClientHeadersOn304'; | ||||
| 
 | ||||
| export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>; | ||||
| 
 | ||||
| @ -130,6 +131,11 @@ const flags: IFlags = { | ||||
|             .UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS, | ||||
|         false, | ||||
|     ), | ||||
|     stripClientHeadersOn304: parseEnvVarBoolean( | ||||
|         process.env | ||||
|             .UNLEASH_EXPERIMENTAL_DETECT_SEGMENT_USAGE_IN_CHANGE_REQUESTS, | ||||
|         false, | ||||
|     ), | ||||
| }; | ||||
| 
 | ||||
| export const defaultExperimentalOptions: IExperimentalOptions = { | ||||
|  | ||||
| @ -26,7 +26,7 @@ process.nextTick(async () => { | ||||
|                     enableHeapSnapshotEnpoint: true, | ||||
|                 }, | ||||
|                 logLevel: LogLevel.debug, | ||||
|                 // secureHeaders: true,
 | ||||
|                 secureHeaders: true, | ||||
|                 versionCheck: { | ||||
|                     enable: false, | ||||
|                 }, | ||||
| @ -40,6 +40,7 @@ process.nextTick(async () => { | ||||
|                         privateProjects: true, | ||||
|                         featureSearchAPI: true, | ||||
|                         featureSearchFrontend: true, | ||||
|                         stripClientHeadersOn304: true, | ||||
|                     }, | ||||
|                 }, | ||||
|                 authentication: { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user