diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 73d8a5923..6b4c4a12f 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -265,7 +265,9 @@ const parseDataFromResponse = (response) => { let data = dataBuffer.toString(charset || 'utf-8'); // Try to parse response to JSON, this can quietly fail try { - data = JSON.parse(response.data); + // Filter out control characters and ZWNBSP character + data = data.replace(/[\x00-\x08\x0E-\x1F\x7F\uFEFF]/g, ''); + data = JSON.parse(data); } catch {} return { data, dataBuffer }; diff --git a/packages/bruno-tests/collection/echo/echo bom json.bru b/packages/bruno-tests/collection/echo/echo bom json.bru new file mode 100644 index 000000000..117c329ba --- /dev/null +++ b/packages/bruno-tests/collection/echo/echo bom json.bru @@ -0,0 +1,11 @@ +meta { + name: echo bom json + type: http + seq: 1 +} + +get { + url: {{host}}/api/echo/bom-json-test + body: none + auth: none +} \ No newline at end of file diff --git a/packages/bruno-tests/src/echo/index.js b/packages/bruno-tests/src/echo/index.js index 36a37102e..2a2b52eb3 100644 --- a/packages/bruno-tests/src/echo/index.js +++ b/packages/bruno-tests/src/echo/index.js @@ -19,4 +19,16 @@ router.post('/xml-raw', (req, res) => { return res.send(req.rawBody); }); +router.get('/bom-json-test', (req, res) => { + const jsonData = { + message: 'Hello!', + success: true + }; + const jsonString = JSON.stringify(jsonData); + const bom = '\uFEFF'; + const jsonWithBom = bom + jsonString; + res.set('Content-Type', 'application/json; charset=utf-8'); + return res.send(jsonWithBom); +}); + module.exports = router;