diff --git a/goldens/public-api/common/http/index.api.md b/goldens/public-api/common/http/index.api.md index d339a9096754..bfb059a42d92 100644 --- a/goldens/public-api/common/http/index.api.md +++ b/goldens/public-api/common/http/index.api.md @@ -2784,12 +2784,14 @@ export interface HttpResourceRequest { context?: HttpContext; credentials?: RequestCredentials | (string & {}); headers?: HttpHeaders | Record>; + integrity?: string; keepalive?: boolean; method?: string; mode?: RequestMode | (string & {}); params?: HttpParams | Record>; priority?: RequestPriority | (string & {}); redirect?: RequestRedirect | (string & {}); + referrer?: string; reportProgress?: boolean; timeout?: number; transferCache?: { diff --git a/packages/common/http/src/resource.ts b/packages/common/http/src/resource.ts index 75813d8fa6b5..b9e413a1ded2 100644 --- a/packages/common/http/src/resource.ts +++ b/packages/common/http/src/resource.ts @@ -287,6 +287,8 @@ function normalizeRequest( context: unwrappedRequest.context, transferCache: unwrappedRequest.transferCache, credentials: unwrappedRequest.credentials as RequestCredentials, + referrer: unwrappedRequest.referrer, + integrity: unwrappedRequest.integrity, timeout: unwrappedRequest.timeout, }, ); diff --git a/packages/common/http/src/resource_api.ts b/packages/common/http/src/resource_api.ts index 7d221d9f5b0c..7530fce1acec 100644 --- a/packages/common/http/src/resource_api.ts +++ b/packages/common/http/src/resource_api.ts @@ -104,6 +104,19 @@ export interface HttpResourceRequest { */ redirect?: RequestRedirect | (string & {}); + /** + * The referrer of the request, which can be used to indicate the origin of the request. + * This is useful for security and analytics purposes. + * Value is a same-origin URL, "about:client", or the empty string, to set request's referrer. + */ + referrer?: string; + + /** + * The integrity metadata of the request, which can be used to ensure the request is made with the expected content. + * A cryptographic hash of the resource to be fetched by request + */ + integrity?: string; + /** * Configures the server-side rendering transfer cache for this request. * diff --git a/packages/common/http/test/resource_spec.ts b/packages/common/http/test/resource_spec.ts index 78582b407f4e..6dea76e4f74b 100644 --- a/packages/common/http/test/resource_spec.ts +++ b/packages/common/http/test/resource_spec.ts @@ -111,6 +111,8 @@ describe('httpResource', () => { mode: 'cors', redirect: 'follow', credentials: 'include', + integrity: 'sha256-abc123', + referrer: 'https://example.com', }), {injector: TestBed.inject(Injector)}, ); @@ -126,6 +128,8 @@ describe('httpResource', () => { expect(req.request.mode).toBe('cors'); expect(req.request.redirect).toBe('follow'); expect(req.request.credentials).toBe('include'); + expect(req.request.integrity).toBe('sha256-abc123'); + expect(req.request.referrer).toBe('https://example.com'); req.flush([]);