diff --git a/packages/fetch/src/request.js b/packages/fetch/src/request.js index 61e10cb..8acd2e6 100644 --- a/packages/fetch/src/request.js +++ b/packages/fetch/src/request.js @@ -37,6 +37,7 @@ const isRequest = object => { * @property {string} method * @property {RequestRedirect} redirect * @property {globalThis.Headers} headers + * @property {RequestCredentials} credentials * @property {URL} parsedURL * @property {AbortSignal|null} signal * @@ -125,6 +126,7 @@ export default class Request extends Body { method, redirect: init.redirect || input.redirect || 'follow', headers, + credentials: init.credentials || 'same-origin', parsedURL, signal: signal || null }; @@ -159,7 +161,7 @@ export default class Request extends Body { */ get credentials() { - return "same-origin" + return this[INTERNALS].credentials } /** diff --git a/packages/fetch/test/request.js b/packages/fetch/test/request.js index eb482fe..23d4a1a 100644 --- a/packages/fetch/test/request.js +++ b/packages/fetch/test/request.js @@ -132,6 +132,16 @@ describe('Request', () => { expect(clonedRequest.signal.aborted).to.equal(true); }); + it('should default to "same-origin" as credentials', () => { + const request = new Request(base) + expect(request.credentials).to.equal('same-origin'); + }) + + it('should respect custom credentials value', () => { + expect(new Request(base, { credentials: 'omit'})).to.have.property('credentials', 'omit'); + expect(new Request(base, { credentials: 'include'})).to.have.property('credentials', 'include'); + }) + it('should throw error with GET/HEAD requests with body', () => { expect(() => new Request(base, {body: ''})) .to.throw(TypeError);