我使用 Service Worker 拦截对安全资源的 HTTP 请求,并向请求添加授权标头(如果用户已登录)。现在,我有一个场景,服务工作人员拦截 POST 请求以注入授权标头。但是,服务工作线程没有接收请求负载中的数据,因此没有请求负载(参见屏幕截图 2)。因此,nodejs 中的后端验证逻辑失败,因为没有收到有效负载数据。理想情况下,除了授权标头之外,后端代码还应该接收有效负载数据以保留在数据库中。有什么指导吗?
下面的第一个屏幕截图是带有有效负载的原始请求。服务工作人员的第二个屏幕截图没有任何请求有效负载。
这是我的服务工作人员代码来拦截获取请求:
self.addEventListener('fetch', (event) => {
const fetchEvent = event;
const requestProcessor = (idToken) => {
console.log('idToken in fetch '+idToken);
let req = event.request;
// For same origin https requests, append idToken to header.
if (self.location.origin == getOriginFromUrl(event.request.url) &&
(self.location.protocol == 'https:' ||
self.location.hostname == 'localhost') &&
idToken) {
// Clone headers as request headers are immutable.
const headers = new Headers();
for (let entry of req.headers.entries()) {
headers.append(entry[0], entry[1]); …Run Code Online (Sandbox Code Playgroud) request payload service-worker service-worker-events angular-service-worker