TykTechnologies / tyk

Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
Other
9.51k stars 1.07k forks source link

Fix: correctly sync multi-value response headers for coprocess-based middlewares #6393

Closed sebkehr closed 1 month ago

sebkehr commented 1 month ago

Description

When synchronizing single- and multi-valued header representations (of coprocess-based middleware responses) the list of values for any multi-valued header is currently replaced by a list containing only the value given by its single-value representation effectively dropping all but the first value. Instead synchronization should affect/replace only the first value and retain possibly remaining values.

Related Issue

I could not find any related issue.

Motivation and Context

We like to employ Tyk Gateway with a coprocess-based response middleware attached to an upstream responding with multiple Set-Cookie headers. We also require our middleware to modify other headers like Location. As is due to header synchronization only the first Set-Cookie header passes our middleware.

How This Has Been Tested

The PR contains a test.

Types of changes

Checklist

sebkehr commented 1 month ago

will reissue shortly