Đăng ký một trình lắng nghe xác thực proxy Chrome MV3 cho việc chuyển hồ sơ
Đăng ký trình lắng nghe xác thực Manifest V3 một cách đồng bộ và đọc tài khoản proxy hiện tại bên trong hàm gọi lại của sự kiện.
Chuyển hồ sơ proxy nên thay đổi tài khoản đã chọn, chứ không phải thêm một trình lắng nghe onAuthRequired khác. Nếu không, các closure cũ có thể tiếp tục trả lời bằng tài khoản từ lần chọn trước.
Đăng ký một trình lắng nghe có tên ở cấp cao nhất của service worker. Đọc tài khoản hiện tại khi có sự kiện đến:
function answerProxyChallenge(details, reply) {
if (!details.isProxy) {
reply({});
return;
}
chrome.storage.session.get('selectedProxy').then(({selectedProxy: p}) => {
if (!p || details.challenger.host !== p.host ||
details.challenger.port !== p.port) {
reply({});
return;
}
reply({authCredentials: {username: p.username, password: p.password}});
}).catch(() => reply({cancel: true}));
}
chrome.webRequest.onAuthRequired.addListener(
answerProxyChallenge,
{urls: ['<all_urls>']},
['asyncBlocking'],
);Đoạn này giả định tiện ích đã lưu proxy HTTP đã chọn dưới selectedProxy, với một cổng số và tài khoản dự định. Manifest cần webRequest, webRequestAuthProvider, storage và các quyền máy chủ cần thiết. Bản thân việc chọn proxy cũng cần quyền proxy.
Việc đăng ký diễn ra đồng bộ. Kho lưu trữ được đọc bên trong hàm gọi lại, sau khi Chrome có một trình lắng nghe đã cài đặt để gửi tới. Chỉ đăng ký sau khi một promise lưu trữ ban đầu được giải quyết sẽ tạo ra khoảng trống đánh thức.
Thêm giới hạn từ chối trước khi phát hành
Đoạn này cho thấy việc đăng ký và chọn tài khoản. Thêm một bản ghi thử lại có giới hạn cho mỗi yêu cầu để mật khẩu bị từ chối không bị gửi vô hạn. Xóa bản ghi đó khi hoàn tất hoặc thất bại. Các biến toàn cục của worker có thể biến mất khi worker dừng, vì vậy hãy giữ trạng thái cần thiết giữa các lần đánh thức trong một vùng lưu trữ phù hợp của tiện ích.
storage.session tồn tại qua các lần khởi động lại worker trong phiên trình duyệt; nó không phải là kho lưu trữ tài khoản vĩnh viễn qua các lần khởi động lại trình duyệt. Xác định tiện ích làm gì khi không có tài khoản đã chọn.
Các kiểm tra isProxy và challenger ngăn một thử thách từ trang web không liên quan nhận được tài khoản này. Nếu trình duyệt không bao giờ gửi sự kiện, việc dọn dẹp trình lắng nghe một mình không thể tạo ra nó: hãy kiểm tra riêng yêu cầu thực tế, quyền và hành vi của trình duyệt.