从 GeckoFx C# 中删除 cookie
Remove cookie from GeckoFx C#
我想删除 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?
我看到三种你可以尝试的方法
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
static class 可以根据纯字符串参数删除 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);
}
}
我想删除 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?
我看到三种你可以尝试的方法
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
static class 可以根据纯字符串参数删除 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);
}
}