5

我正在为 Firefox 浏览器插件编写代码,并尝试使用 chrome API 更新 cookie 的值。在调用 chrome.cookies.set 方法时,它会在控制台上返回以下错误。

错误:未捕获的异常:未知(无法转换为字符串)

var finalCookieObj = { 
    domain: ".qa.soul.com", 
    name: "aaa", 
    value: "as", 
    path: "/", 
    httpOnly: false, 
    url: "qa.soul.com/", 
    expirationDate: 1459788960 
};

chrome.cookies.set(finalCookieObj, function(cookie) {
    console.log('added cookie');
});

API 参考:https ://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/set

4

1 回答 1

2

我认为问题在于url需要一个完全限定的 URL,包括协议。此版本有效:

var finalCookieObj = { 
    domain: ".qa.soul.com", 
    name: "aaa", 
    value: "as", 
    path: "/", 
    httpOnly: false, 
    url: "https://qa.soul.com/", 
    expirationDate: 1459788960 
};

chrome.cookies.set(finalCookieObj, function(cookie) {
    console.log('added cookie');
});

我将更新文档以明确说明这一点。

此外,异步函数通过设置chrome.runtime.lastError来报告错误:在回调中检查这一点总是一个好主意。

不过,这很有趣,我看到了不同的控制台输出。我看到这样的错误:

[Exception... "Component returned failure code: 0x804b000a 
(NS_ERROR_MALFORMED_URI) [nsIIOService.newURI]"  nsresult:
"0x804b000a (NS_ERROR_MALFORMED_URI)"  location: "JS frame
:: resource://gre/modules/NetUtil.jsm :: NetUtil_newURI ::
line 191" data: no]

...其中包括一个包含NetUtil_newURI(), 的调用堆栈,足以指出url问题所在。你在看哪个控制台?

于 2016-04-09T21:20:23.197 回答