diff --git a/src/handlers/response-interceptor.ts b/src/handlers/response-interceptor.ts index cb3c967f..5728e135 100644 --- a/src/handlers/response-interceptor.ts +++ b/src/handlers/response-interceptor.ts @@ -95,15 +95,7 @@ function copyHeaders(originalResponse, response) { keys = keys.filter((key) => !['content-encoding', 'transfer-encoding'].includes(key)); keys.forEach((key) => { - let value = originalResponse.headers[key]; - - if (key === 'set-cookie') { - // remove cookie domain - value = Array.isArray(value) ? value : [value]; - value = value.map((x) => x.replace(/Domain=[^;]+?/i, '')); - } - - response.setHeader(key, value); + response.setHeader(key, originalResponse.headers[key]); }); } else { response.headers = originalResponse.headers; diff --git a/test/e2e/response-interceptor.spec.ts b/test/e2e/response-interceptor.spec.ts index 561a7791..e73e9c83 100644 --- a/test/e2e/response-interceptor.spec.ts +++ b/test/e2e/response-interceptor.spec.ts @@ -65,6 +65,16 @@ describe('responseInterceptor()', () => { .expect('set-cookie', /.*cookie=monster.*/) .expect(302); }); + + it('should proxy and return original domain of set-cookie headers', async () => { + return agent + .get( + `/response-headers?set-cookie=${encodeURIComponent( + 'JSESSIONID=monster;Domain=httpbin.com;Path=/;SameSite=Lax' + )}` + ) + .expect('set-cookie', /.*Domain=httpbin.com.*/); + }); }); describe('intercept compressed responses', () => {