实际上,我想在发送请求之前使用webRequest来修改cookie。我自己的cookie数据存储在扩展的存储中,但从存储中获取数据是异步的。那么如何修改请求的cookie?
我想这样做:
weak
如何在chrome.webRequest.onBeforeSendHeaders.addListener回调函数或任何其他解决方案中添加回调参数?
答案 0 :(得分:0)
如果您确实想这样做,请使用Promise
var beforeSendHeadersHandler = {
func: function(details, addCookie){
var promise = new Promise(function(resolve) {
chrome.storage.local.get("your key", function(results) {
resolve(results["your key"]);
});
};
promise.then(function(value) {
return {requestHeaders: value};
});
},
filter: {
urls: ["<all_urls>"]
},
extra: ["blocking", "requestHeaders"]
};
chrome.webRequest.onBeforeSendHeaders.addListener(beforeSendHeadersHandler.func,
beforeSendHeadersHandler.filter,
beforeSendHeadersHandler.extra);
请参阅Synchronous call in Google Chrome extension和Asynchronous operation in blocking chrome.webRequest.onBeforeSendHeaders listener,建议如果您可以在侦听器之外制作副本,或者如果可能,请使用localStorage保存存储空间,同步。