angular/packages
Maximilian Koeller ee35e223a7 feat(service-worker): use ignoreVary: true when retrieving responses from cache (#34663)
The Angular ServiceWorker always uses a copy of the request without
headers for caching assets (in order to avoid issues with opaque
responses). Therefore, it was previously not possible to retrieve
resources from the cache if the response contained [Vary](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary) headers.

In addition to that, `Vary` headers do not work in all browsers (or work
differently) and may not work as intended with ServiceWorker caches. See
[this article](https://www.smashingmagazine.com/2017/11/understanding-vary-header) and the linked resources for more info.

This commit avoids the aforementioned issues by making sure the Angular
ServiceWorker always sets the `ignoreVary` option passed to
[Cache#match()](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match) to `true`. This allows the ServiceWorker to correctly
retrieve cached responses with `Vary` headers, which was previously not
possible.

Fixes #36638

BREAKING CHANGE:

Previously, [Vary](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary)
headers would be taken into account when retrieving resources from the
cache, completely preventing the retrieval of cached assets (due to
ServiceWorker implementation details) and leading to unpredictable
behavior due to inconsistent/buggy implementations in different
browsers.

Now, `Vary` headers are ignored when retrieving resources from the
ServiceWorker caches, which can result in resources being retrieved even
when their headers are different. If your application needs to
differentiate its responses based on request headers, please make sure
the Angular ServiceWorker is [configured](https://angular.io/guide/service-worker-config)
to avoid caching the affected resources.

PR Close #34663
2020-05-01 09:44:07 -07:00
..
animations build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
bazel build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
benchpress release(benchpress): bump version of benchpress to 0.2.0 (#36457) 2020-04-22 17:10:28 -04:00
common refactor(common): remove WrappedValue from AsyncPipe (#36633) 2020-04-30 11:41:49 -07:00
compiler fix(compiler): normalize line endings in ICU expansions (#36741) 2020-04-28 12:22:40 -07:00
compiler-cli refactor(ngcc): move PathMappings to separate file to avoid circular dependency (#36626) 2020-04-29 14:28:26 -07:00
core fix(core): Refresh transplanted views at insertion point only (#35968) 2020-04-29 14:31:12 -07:00
docs refactor(core): remove deprecated Renderer (#33019) 2019-10-08 09:23:00 -07:00
elements build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
examples build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
forms test: disable failing saucelabs tests (#36620) 2020-04-14 10:13:33 -07:00
http build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
language-service test(language-service): do not invalidate @angular/core (#36845) 2020-04-29 14:27:33 -07:00
localize refactor(localize): remove unused code (#36745) 2020-04-23 12:07:33 -04:00
platform-browser build: enable platform-browser tests on Saucelabs (#36797) 2020-04-28 15:10:27 -07:00
platform-browser-dynamic build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
platform-server build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
platform-webworker build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
platform-webworker-dynamic build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
private/testing build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
router feat(router): allow CanLoad guard to return UrlTree (#36610) 2020-04-27 12:53:49 -07:00
service-worker feat(service-worker): use ignoreVary: true when retrieving responses from cache (#34663) 2020-05-01 09:44:07 -07:00
upgrade build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00
zone.js revert: "feat(dev-infra): exposed new rule 'component_benchmark' via dev_infra (#36434)" (#36798) 2020-04-24 11:03:38 -07:00
BUILD.bazel build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
circular-deps-test.conf.js build: move circular deps golden to a subfolder (#36630) 2020-04-22 17:11:20 -04:00
empty.ts
goog.d.ts fix(ivy): use goog.LOCALE for Closure Compiler to define default LOCALE_ID (#31519) 2019-07-16 13:02:10 -04:00
license-banner.txt build: bump year (#34651) 2020-01-13 07:21:43 -08:00
README.md docs: add doc reference to npm package readme (#33911) 2019-11-20 14:46:23 -08:00
system.d.ts build: no longer run tslint from within gulp task (#35800) 2020-03-03 09:20:49 -08:00
tsconfig-build-no-strict.json refactor(core): ensure compatibility with typescript strict flag (#30993) 2019-07-18 14:21:25 -07:00
tsconfig-build.json refactor(core): ensure compatibility with typescript strict flag (#30993) 2019-07-18 14:21:25 -07:00
tsconfig-test.json refactor: fix typescript strict flag failures in all tests (#30993) 2019-07-18 14:21:26 -07:00
tsconfig.json revert: "feat(dev-infra): exposed new rule 'component_benchmark' via dev_infra (#36434)" (#36798) 2020-04-24 11:03:38 -07:00
types.d.ts build: reformat repo to new clang@1.4.0 (#36613) 2020-04-14 12:08:36 -07:00

Angular

The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.

Usage information and reference details can be found in Angular documentation.

License: MIT