From 1b78359739ab2cade00488fcd38a5571c0b803ea Mon Sep 17 00:00:00 2001 From: ciat-777 Date: Sat, 21 Mar 2026 12:48:34 +0800 Subject: [PATCH] fix: force identity encoding for claude messages --- src/server/proxy-core/providers/claudeProviderProfile.ts | 2 +- src/server/proxy-core/providers/registry.test.ts | 1 + src/server/routes/proxy/upstreamEndpoint.test.ts | 4 ++-- src/server/routes/proxy/upstreamEndpoint.ts | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/server/proxy-core/providers/claudeProviderProfile.ts b/src/server/proxy-core/providers/claudeProviderProfile.ts index e8301da..57eafe2 100644 --- a/src/server/proxy-core/providers/claudeProviderProfile.ts +++ b/src/server/proxy-core/providers/claudeProviderProfile.ts @@ -83,7 +83,7 @@ function buildClaudeRuntimeHeaders(input: { 'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT, Connection: 'keep-alive', Accept: input.stream ? 'text/event-stream' : 'application/json', - 'Accept-Encoding': input.stream ? 'identity' : 'gzip, deflate, br, zstd', + 'Accept-Encoding': 'identity', }; if (input.isClaudeOauthUpstream) { headers.Authorization = `Bearer ${input.tokenValue}`; diff --git a/src/server/proxy-core/providers/registry.test.ts b/src/server/proxy-core/providers/registry.test.ts index 8b7c746..e8e149c 100644 --- a/src/server/proxy-core/providers/registry.test.ts +++ b/src/server/proxy-core/providers/registry.test.ts @@ -70,6 +70,7 @@ describe('resolveProviderProfile', () => { expect(result.headers.Authorization).toBe('Bearer oauth-access-token'); expect(result.headers['x-api-key']).toBeUndefined(); expect(result.headers['anthropic-version']).toBe('2023-06-01'); + expect(result.headers['Accept-Encoding']).toBe('identity'); expect(result.runtime).toMatchObject({ executor: 'claude', modelName: 'claude-opus-4-6', diff --git a/src/server/routes/proxy/upstreamEndpoint.test.ts b/src/server/routes/proxy/upstreamEndpoint.test.ts index 8492532..3b52b2f 100644 --- a/src/server/routes/proxy/upstreamEndpoint.test.ts +++ b/src/server/routes/proxy/upstreamEndpoint.test.ts @@ -867,7 +867,7 @@ describe('buildUpstreamEndpointRequest', () => { expect(request.headers['Accept-Encoding']).toBe('identity'); }); - it('uses claude-code beta headers and compressed non-stream responses for claude upstream requests', () => { + it('uses claude-code beta headers and uncompressed non-stream responses for claude upstream requests', () => { const request = buildUpstreamEndpointRequest({ endpoint: 'messages', modelName: 'claude-opus-4-6', @@ -887,7 +887,7 @@ describe('buildUpstreamEndpointRequest', () => { expect(request.headers['anthropic-beta']).toContain('oauth-2025-04-20'); expect(request.headers['anthropic-beta']).toContain('context-management-2025-06-27'); expect(request.headers.Accept).toBe('application/json'); - expect(request.headers['Accept-Encoding']).toBe('gzip, deflate, br, zstd'); + expect(request.headers['Accept-Encoding']).toBe('identity'); }); it('converts system roles to developer in native codex responses bodies', () => { diff --git a/src/server/routes/proxy/upstreamEndpoint.ts b/src/server/routes/proxy/upstreamEndpoint.ts index 9a7aec9..0f73d46 100644 --- a/src/server/routes/proxy/upstreamEndpoint.ts +++ b/src/server/routes/proxy/upstreamEndpoint.ts @@ -443,7 +443,7 @@ function buildClaudeRuntimeHeaders(input: { 'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT, Connection: 'keep-alive', Accept: input.stream ? 'text/event-stream' : 'application/json', - 'Accept-Encoding': input.stream ? 'identity' : 'gzip, deflate, br, zstd', + 'Accept-Encoding': 'identity', }; if (input.isClaudeOauthUpstream) { headers.Authorization = `Bearer ${input.tokenValue}`;