Saya pertama kali berurusan dengan Firefox Web Extension API. Saya ingin menghapus semua cookie dari example.com dengan mengklik tombol. Saya memiliki kode berikut tetapi tidak mendapatkan hasil apa pun.

Background.js

function onRemoved(cookie) {
  console.log(`Removed: ${cookie}`);
}

function onError(error) {
  console.log(`Error removing cookie: ${error}`);
}

function removeCookie() {
  var removing = browser.cookies.remove({
    url: "example.com"
  });
  removing.then(onRemoved, onError);
}

browser.browserAction.onClicked.addListener(removeCookie);

Manifest.json

{

 "description": "RemoveCookie",
 "manifest_version": 2,
 "name": "remove-cookies",
 "version": "1.0",
 "icons": {
 "48": "icons/icon.png"
 },

"background": {
 "scripts": ["background.js"]
},

"browser_action": {
  "default_icon": "icons/icon.png",
  "default_title": "Remove Cookie!"
},

"permissions": [
 "*://*.example.com/*",
 "cookies"
]
}
1
HeScm 18 November 2017, 12:48

1 menjawab

Jawaban Terbaik

Dari https://developer.mozilla.org/en -US/Add-ons/WebExtensions/API/cookies/remove

Metode remove() dari cookie API menghapus cookie, berdasarkan nama dan URL-nya.

Ini berarti Anda juga perlu menentukan parameter name.

Selain itu, parameter url harus menyertakan protokol atau janji hanya akan diselesaikan dengan null (artinya tidak ada cookie yang dapat ditemukan).

Jika cookie yang cocok dengan parameter detail tidak dapat ditemukan, janji dipenuhi dengan nol.


Karena itu, Anda dapat menggunakan browser.cookies.getAll untuk mendapatkan semua cookie untuk URL tertentu dan kemudian menghapus setiap cookie yang diberi namanya:

function onRemoved(cookies) {
  console.log('Removed', cookies);
}

function onError(error) {
  console.log(`Error removing cookie: ${error}`);
}

function removeCookie() {
  var url = "http://example.com"; // NOTE the full url including protocol
  browser.cookies.getAll({ url: url })
  .then(function(cookies) {
    return Promise.all(cookies.map(function(cookie) {
      return browser.cookies.remove({ url: url, name: cookie.name });
    }));
  })
  .then(onRemoved, onError);
}

browser.browserAction.onClicked.addListener(removeCookie);
0
Maluen 18 November 2017, 10:23