diff --git a/config/presets/middleware.json b/config/presets/middleware.json index 134a37874..380d0e8fe 100644 --- a/config/presets/middleware.json +++ b/config/presets/middleware.json @@ -17,6 +17,7 @@ "DELETE" ], "CorsHandler:_options_exposedHeaders": [ + "Location", "Updates-Via" ] }, diff --git a/test/integration/Middleware.test.ts b/test/integration/Middleware.test.ts index 660040a0a..93a85e137 100644 --- a/test/integration/Middleware.test.ts +++ b/test/integration/Middleware.test.ts @@ -11,7 +11,7 @@ const port = 6002; class SimpleHttpHandler extends HttpHandler { public async handle(input: { request: HttpRequest; response: HttpResponse }): Promise { - input.response.writeHead(200); + input.response.writeHead(200, { location: '/' }); input.response.end('Hello World'); } } @@ -65,6 +65,12 @@ describe('An Express server with middleware', (): void => { expect(res.header).toEqual(expect.objectContaining({ 'access-control-allow-origin': 'test.com' })); }); + it('exposes the Location header via CORS.', async(): Promise => { + const res = await request(server).get('/').expect(200); + const exposed = res.header['access-control-expose-headers']; + expect(exposed.split(/\s*,\s*/u)).toContain('Location'); + }); + it('sends incoming requests to the handler.', async(): Promise => { const response = request(server).get('/').set('Host', 'test.com'); expect(response).toBeDefined();