从GeckoFx C#中删除cookie

问题描述 投票:2回答:1

我想删除Geckofx FireFox Browser中网站的cookie。我找到了这个

Xpcom.QueryInterface<nsICookieManager>((object)Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1")).Remove(...);

[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface nsICookieManager
{
    void RemoveAll();
    nsISimpleEnumerator GetEnumeratorAttribute();
    void Remove(nsAUTF8StringBase aHost, nsACStringBase aName,    nsAUTF8StringBase aPath, bool aBlocked);
}

我对它的参数感到困惑,例如:nsAUTF8StringBase

 public class nsAUTF8StringBase : IString
{
    protected nsAUTF8StringBase();

    protected static int NS_CStringContainerFinish(nsAUTF8StringBase container);
    protected static int NS_CStringContainerInit(nsAUTF8StringBase container);
    protected static int NS_CStringGetData(nsAUTF8StringBase str, out IntPtr data, IntPtr nullTerm);
    protected static bool NS_CStringGetIsVoid(nsAUTF8StringBase str);
    protected static int NS_CStringSetData(nsAUTF8StringBase str, byte[] data, int length);
    protected static void NS_CStringSetIsVoid(nsAUTF8StringBase str, bool isVoid);
    public virtual void SetData(string value);
    public override string ToString();
}

我该如何创造“aHost”?以及如何删除网站cookie?

c# cookies interface geckofx
1个回答
1
投票

我看到你可以尝试的三种方式

1 - 如果您知道cookie名称,主机和路径,则可以执行以下操作(实例化字符串参数):

 nsICookieManager cookieMan = Xpcom.GetService<nsICookieManager>("@mozilla.org/cookiemanager;1");
 cookieMan = Xpcom.QueryInterface<nsICookieManager>(cookieMan);
 cookieMan.Remove(new nsAUTF8String("SomeHost"),new nsACString("SomeName"), new nsAUTF8String("SomePath"),false);

2 - 使用Gecko.CookieManager静态类,它可以根据普通字符串参数删除cookie(详见下文)

3 - 如果您不知道有关要删除的cookie的所有信息(您只知道值或名称或其他内容),那么您可以使用Gecko.CookieManager枚举cookie并将其删除。

        var cookies = CookieManager.GetEnumerator();

        while (cookies.MoveNext())
        {
            if (cookies.Current.Name == "CookieIHate")
            {
                CookieManager.Remove(cookies.Current.Host, cookies.Current.Name, cookies.Current.Path, false);
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.