diff --git a/src/js/resources/prevent-fetch.js b/src/js/resources/prevent-fetch.js index cfd66c0ac..ba2565a69 100644 --- a/src/js/resources/prevent-fetch.js +++ b/src/js/resources/prevent-fetch.js @@ -65,9 +65,14 @@ function preventFetchFn( const responseProps = { statusText: { value: 'OK' }, }; + const responseHeaders = {}; if ( /^\{.*\}$/.test(responseType) ) { try { Object.entries(JSON.parse(responseType)).forEach(([ p, v ]) => { + if ( p === 'headers' && trusted ) { + Object.assign(responseHeaders, v); + return; + } if ( validResponseProps[p] === undefined ) { return; } if ( validResponseProps[p].includes(v) === false ) { return; } responseProps[p] = { value: v }; @@ -120,11 +125,11 @@ function preventFetchFn( } return Promise.resolve(generateContentFn(trusted, responseBody)).then(text => { safe.uboLog(logPrefix, `Prevented with response "${text}"`); - const response = new Response(text, { - headers: { - 'Content-Length': text.length, - } - }); + const headers = Object.assign({}, responseHeaders); + if ( headers['content-length'] === undefined ) { + headers['content-length'] = text.length; + } + const response = new Response(text, { headers }); const props = Object.assign( { url: { value: details.url } }, responseProps