在使用 Service Worker 的时候,可以拦截对 CSS 的请求。如果拦截后返回的响应,是人为构造的 Response 对象,则该对象不存在 url 属性,浏览器会认为这个 CSS 是从所请求的 URL 获得的,因此,这个 CSS 内部的相对路径资源(图片、import的其他CSS)加载的基地址会是原 URL。

如果拦截以后直接返回另一个服务器的响应,此时返回的 Response 对象包含 URL 属性,是浏览器生成的对象。此时浏览器认为该 CSS 内部的其他相对路径资源都应该从新的 URL 处加载。