From e8bc97b80eff57ad1e317d7562557bcdf92fae6f Mon Sep 17 00:00:00 2001 From: AnastasiiaSvietlova Date: Fri, 14 Jun 2024 14:40:37 +0200 Subject: [PATCH 1/6] added Access-Control-Max-Age header to delivery.sendEvent --- packages/delivery-xml-http-request/delivery.js | 1 + packages/delivery-xml-http-request/test/delivery.test.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/delivery-xml-http-request/delivery.js b/packages/delivery-xml-http-request/delivery.js index 6992959ba8..e1343d14b7 100644 --- a/packages/delivery-xml-http-request/delivery.js +++ b/packages/delivery-xml-http-request/delivery.js @@ -28,6 +28,7 @@ module.exports = (client, win = window) => ({ req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey) req.setRequestHeader('Bugsnag-Payload-Version', '4') req.setRequestHeader('Bugsnag-Sent-At', (new Date()).toISOString()) + req.setRequestHeader('Access-Control-Max-Age', '86400') req.send(body) } catch (e) { client._logger.error(e) diff --git a/packages/delivery-xml-http-request/test/delivery.test.ts b/packages/delivery-xml-http-request/test/delivery.test.ts index cb7485d832..8df6c6b3b6 100644 --- a/packages/delivery-xml-http-request/test/delivery.test.ts +++ b/packages/delivery-xml-http-request/test/delivery.test.ts @@ -66,6 +66,7 @@ describe('delivery:XMLHttpRequest', () => { expect(requests[0].headers['Bugsnag-Api-Key']).toEqual('aaaaaaaa') expect(requests[0].headers['Bugsnag-Payload-Version']).toEqual('4') expect(requests[0].headers['Bugsnag-Sent-At']).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/) + expect(requests[0].headers['Access-Control-Max-Age']).toEqual('86400') expect(requests[0].data).toBe(JSON.stringify(payload)) done() }) From e2c872f21ebe3dddb6f0de5fbca44b58fbe67103 Mon Sep 17 00:00:00 2001 From: AnastasiiaSvietlova Date: Fri, 14 Jun 2024 14:51:37 +0200 Subject: [PATCH 2/6] added changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a50420644e..2457619e8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Added + +- (delivery-xml-http-request) Add Access-Control-Max-Age header to CORS preflight responses [#2160](https://github.com/bugsnag/bugsnag-js/pull/2160) + ### Fixed - (react-native) Use synchronous native module calls when New Architecture is enabled [#2152](https://github.com/bugsnag/bugsnag-js/pull/2152) From 7647efe2d9633d80afee3f2a01112ce931c3ad3a Mon Sep 17 00:00:00 2001 From: AnastasiiaSvietlova Date: Mon, 17 Jun 2024 08:49:28 +0200 Subject: [PATCH 3/6] changed value to integer --- packages/delivery-xml-http-request/delivery.js | 2 +- packages/delivery-xml-http-request/test/delivery.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/delivery-xml-http-request/delivery.js b/packages/delivery-xml-http-request/delivery.js index e1343d14b7..7e57abe2b9 100644 --- a/packages/delivery-xml-http-request/delivery.js +++ b/packages/delivery-xml-http-request/delivery.js @@ -28,7 +28,7 @@ module.exports = (client, win = window) => ({ req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey) req.setRequestHeader('Bugsnag-Payload-Version', '4') req.setRequestHeader('Bugsnag-Sent-At', (new Date()).toISOString()) - req.setRequestHeader('Access-Control-Max-Age', '86400') + req.setRequestHeader('Access-Control-Max-Age', 86400) req.send(body) } catch (e) { client._logger.error(e) diff --git a/packages/delivery-xml-http-request/test/delivery.test.ts b/packages/delivery-xml-http-request/test/delivery.test.ts index 8df6c6b3b6..31cb1fd527 100644 --- a/packages/delivery-xml-http-request/test/delivery.test.ts +++ b/packages/delivery-xml-http-request/test/delivery.test.ts @@ -66,7 +66,7 @@ describe('delivery:XMLHttpRequest', () => { expect(requests[0].headers['Bugsnag-Api-Key']).toEqual('aaaaaaaa') expect(requests[0].headers['Bugsnag-Payload-Version']).toEqual('4') expect(requests[0].headers['Bugsnag-Sent-At']).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/) - expect(requests[0].headers['Access-Control-Max-Age']).toEqual('86400') + expect(requests[0].headers['Access-Control-Max-Age']).toEqual(86400) expect(requests[0].data).toBe(JSON.stringify(payload)) done() }) From 1598295b0d7b5919094ea6b6c49f03691571b1dd Mon Sep 17 00:00:00 2001 From: AnastasiiaSvietlova Date: Fri, 20 Sep 2024 14:36:25 +0200 Subject: [PATCH 4/6] added condition for req header --- packages/delivery-xml-http-request/delivery.js | 4 +++- packages/delivery-xml-http-request/test/delivery.test.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/delivery-xml-http-request/delivery.js b/packages/delivery-xml-http-request/delivery.js index 7e57abe2b9..bf4de94186 100644 --- a/packages/delivery-xml-http-request/delivery.js +++ b/packages/delivery-xml-http-request/delivery.js @@ -28,7 +28,9 @@ module.exports = (client, win = window) => ({ req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey) req.setRequestHeader('Bugsnag-Payload-Version', '4') req.setRequestHeader('Bugsnag-Sent-At', (new Date()).toISOString()) - req.setRequestHeader('Access-Control-Max-Age', 86400) + if (url.startsWith('https')) { + req.setRequestHeader('Access-Control-Max-Age', 86400) + } req.send(body) } catch (e) { client._logger.error(e) diff --git a/packages/delivery-xml-http-request/test/delivery.test.ts b/packages/delivery-xml-http-request/test/delivery.test.ts index 31cb1fd527..d17433c0e5 100644 --- a/packages/delivery-xml-http-request/test/delivery.test.ts +++ b/packages/delivery-xml-http-request/test/delivery.test.ts @@ -53,7 +53,7 @@ describe('delivery:XMLHttpRequest', () => { const payload = { sample: 'payload' } as unknown as EventDeliveryPayload const config = { apiKey: 'aaaaaaaa', - endpoints: { notify: '/echo/' }, + endpoints: { notify: 'https/echo/' }, redactedKeys: [] } @@ -61,7 +61,7 @@ describe('delivery:XMLHttpRequest', () => { expect(err).toBe(null) expect(requests.length).toBe(1) expect(requests[0].method).toBe('POST') - expect(requests[0].url).toMatch('/echo/') + expect(requests[0].url).toMatch('https/echo/') expect(requests[0].headers['Content-Type']).toEqual('application/json') expect(requests[0].headers['Bugsnag-Api-Key']).toEqual('aaaaaaaa') expect(requests[0].headers['Bugsnag-Payload-Version']).toEqual('4') From 103674e7973ff804c75d7feee4644a1d6ba5e40c Mon Sep 17 00:00:00 2001 From: AnastasiiaSvietlova Date: Fri, 20 Sep 2024 17:01:56 +0200 Subject: [PATCH 5/6] changed startsWith to substring --- packages/delivery-xml-http-request/delivery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/delivery-xml-http-request/delivery.js b/packages/delivery-xml-http-request/delivery.js index bf4de94186..16a5911bfc 100644 --- a/packages/delivery-xml-http-request/delivery.js +++ b/packages/delivery-xml-http-request/delivery.js @@ -28,7 +28,7 @@ module.exports = (client, win = window) => ({ req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey) req.setRequestHeader('Bugsnag-Payload-Version', '4') req.setRequestHeader('Bugsnag-Sent-At', (new Date()).toISOString()) - if (url.startsWith('https')) { + if (url.substring(0, 5) === 'https') { req.setRequestHeader('Access-Control-Max-Age', 86400) } req.send(body) From 80300f8b839995e0f9d5c014038c08223172948c Mon Sep 17 00:00:00 2001 From: AnastasiiaSvietlova Date: Fri, 20 Sep 2024 18:15:36 +0200 Subject: [PATCH 6/6] fix changelog --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb8c587395..1440e2780f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Added + +- (delivery-xml-http-request) Add Access-Control-Max-Age header to CORS preflight responses [#2160](https://github.com/bugsnag/bugsnag-js/pull/2160) + ### Changed - (react-native) Update bugsnag-cocoa from v6.29.0 to [v6.30.1](https://github.com/bugsnag/bugsnag-cocoa/blob/master/CHANGELOG.md#6301-2024-07-25) @@ -15,7 +19,6 @@ ### Added - (core) Add new `setTraceCorrelation` method to events [#2159](https://github.com/bugsnag/bugsnag-js/pull/2159) -- (delivery-xml-http-request) Add Access-Control-Max-Age header to CORS preflight responses [#2160](https://github.com/bugsnag/bugsnag-js/pull/2160) ### Changed