fix: force identity encoding for claude messages

This commit is contained in:
ciat-777
2026-03-21 12:48:34 +08:00
parent 9007ca7ea7
commit 1b78359739
4 changed files with 5 additions and 4 deletions
@@ -83,7 +83,7 @@ function buildClaudeRuntimeHeaders(input: {
'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT, 'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT,
Connection: 'keep-alive', Connection: 'keep-alive',
Accept: input.stream ? 'text/event-stream' : 'application/json', Accept: input.stream ? 'text/event-stream' : 'application/json',
'Accept-Encoding': input.stream ? 'identity' : 'gzip, deflate, br, zstd', 'Accept-Encoding': 'identity',
}; };
if (input.isClaudeOauthUpstream) { if (input.isClaudeOauthUpstream) {
headers.Authorization = `Bearer ${input.tokenValue}`; headers.Authorization = `Bearer ${input.tokenValue}`;
@@ -70,6 +70,7 @@ describe('resolveProviderProfile', () => {
expect(result.headers.Authorization).toBe('Bearer oauth-access-token'); expect(result.headers.Authorization).toBe('Bearer oauth-access-token');
expect(result.headers['x-api-key']).toBeUndefined(); expect(result.headers['x-api-key']).toBeUndefined();
expect(result.headers['anthropic-version']).toBe('2023-06-01'); expect(result.headers['anthropic-version']).toBe('2023-06-01');
expect(result.headers['Accept-Encoding']).toBe('identity');
expect(result.runtime).toMatchObject({ expect(result.runtime).toMatchObject({
executor: 'claude', executor: 'claude',
modelName: 'claude-opus-4-6', modelName: 'claude-opus-4-6',
@@ -867,7 +867,7 @@ describe('buildUpstreamEndpointRequest', () => {
expect(request.headers['Accept-Encoding']).toBe('identity'); 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({ const request = buildUpstreamEndpointRequest({
endpoint: 'messages', endpoint: 'messages',
modelName: 'claude-opus-4-6', 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('oauth-2025-04-20');
expect(request.headers['anthropic-beta']).toContain('context-management-2025-06-27'); expect(request.headers['anthropic-beta']).toContain('context-management-2025-06-27');
expect(request.headers.Accept).toBe('application/json'); 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', () => { it('converts system roles to developer in native codex responses bodies', () => {
+1 -1
View File
@@ -443,7 +443,7 @@ function buildClaudeRuntimeHeaders(input: {
'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT, 'User-Agent': getInputHeader(input.claudeHeaders, 'user-agent') || CLAUDE_DEFAULT_USER_AGENT,
Connection: 'keep-alive', Connection: 'keep-alive',
Accept: input.stream ? 'text/event-stream' : 'application/json', Accept: input.stream ? 'text/event-stream' : 'application/json',
'Accept-Encoding': input.stream ? 'identity' : 'gzip, deflate, br, zstd', 'Accept-Encoding': 'identity',
}; };
if (input.isClaudeOauthUpstream) { if (input.isClaudeOauthUpstream) {
headers.Authorization = `Bearer ${input.tokenValue}`; headers.Authorization = `Bearer ${input.tokenValue}`;