Как удалить Cookie из windows.form?

Добро пожаловать в SO!

Что вы, вероятно, упустили, так это то, что видимость ваших базовых карт должна быть изменена путем прямого добавления или удаления их с карты, вместо того, чтобы возиться с их z-index / DOM позиция с помощью метода takeToFront.

Затем элемент управления Leaflet Layers автоматически синхронизирует его выбор при программном добавлении / удалении известных ему слоев.

23
задан Sam 11 August 2014 в 15:53
поделиться

9 ответов

Если у вас включен JavaScript, вы можете просто использовать этот фрагмент кода, чтобы очистить файлы cookie для сайта, на котором в данный момент работает веб-браузер.

webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())")

Это получено из этого букмарклета ] для очистки файлов cookie.

25
ответ дан 29 November 2019 в 01:18
поделиться

Я нашел решение для удаления всех файлов cookie. пример, найденный в URL, удаляет куки при запуске приложения (процесса).

http://mdb-blog.blogspot.com/2013/02/c-winforms-webbrowser-clear-all-cookies.html

Решение использует функцию InternetSetOption , чтобы объявить веб-браузер для очистки всего его содержимого.

int option = (int)3/* INTERNET_SUPPRESS_COOKIE_PERSIST*/;
int* optionPtr = &option;

bool success = InternetSetOption(0, 81/*INTERNET_OPTION_SUPPRESS_BEHAVIOR*/, new IntPtr(optionPtr), sizeof(int));
if (!success)
{
    MessageBox.Show("Something went wrong !>?");
}

Обратите внимание, что файлы cookie удаляются только для определенного ПРОЦЕССА, как написано в MSDN INTERNET_OPTION_SUPPRESS_BEHAVIOR :

Опция общего назначения, которая используется для подавления поведения в основа всего процесса.

10
ответ дан 29 November 2019 в 01:18
поделиться

Попробуйте использовать это:

System.IO.File.Delete(Environment.SpecialFolder.Cookies.ToString() + "cookiename");
3
ответ дан 29 November 2019 в 01:18
поделиться

Вариант других предложенных ответов, который не требует небезопасного кода или ручной сортировки:

    private static void SuppressCookiePersistence()
    {
        int flag = INTERNET_SUPPRESS_COOKIE_PERSIST;
        if (!InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SUPPRESS_BEHAVIOR, ref flag, sizeof(int)))
        {
            var ex = Marshal.GetExceptionForHR(Marshal.GetHRForLastWin32Error());
            throw ex;
        }
    }

    const int INTERNET_OPTION_SUPPRESS_BEHAVIOR = 81;
    const int INTERNET_SUPPRESS_COOKIE_PERSIST = 3;

    [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, ref int flag, int dwBufferLength);
3
ответ дан 29 November 2019 в 01:18
поделиться
webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())")
1
ответ дан 29 November 2019 в 01:18
поделиться

Управление веб-браузером на основе Internet Explorer, поэтому, когда мы удаляем куки-файлы IE, куки-файлы веб-браузера также удаляются. так что этот ответ, вы можете попробовать это:

System.Diagnostics.Process.Start("CMD.exe","/C RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2");
1
ответ дан 29 November 2019 в 01:18
поделиться

Я использую этот код, и он работает без JavaScript. Он делает то же самое, что и JavaScript, но в VB.NET. Кроме того, навигация не требуется.

For Each cookie As String In Document.Cookie.Split(";"c)
    Dim domain As String = "." + url.Host
    While domain.Length > 0
        Dim path As String = url.LocalPath
        While path.Length > 0
            Document.Cookie = cookie.Split("="c)(0).Trim & "= ;expires=Thu, 30-Oct-1980 16:00:00 GMT;path=" & path & ";domain=" & domain
            path = path.Substring(0, path.Length - 1)
        End While
        Select Case domain.IndexOf(".")
            Case 0
                domain = domain.Substring(1)
            Case -1
                domain = ""
            Case Else
                domain = domain.Substring(domain.IndexOf("."))
        End Select
    End While
Next

Единственное реальное отличие от JavaScript в том, что вместо того, чтобы просто истечь cookie=value, я специально ищу = и истекаю cookie=. Это важно для устаревших файлов cookie, которые не имеют значения.

Подводные камни:

  • Вы можете удалить только файлы cookie веб-сайта, на который вы заходили.
  • Если страница перенаправлена ​​в другой домен, удаляемые вами файлы cookie могут быть из перенаправленного домена. Или нет, это гонка между перенаправлением и вашим кодом.
  • Не открывайте Document до ReadyState = WebBrowserReadyState.Complete, в противном случае Document будет Nothing, и при разыменовании возникнет исключение.
  • Вероятно, много других, но этот код прекрасно работает для меня.

Firefox с надстройкой View Cookies очень помогли в отладке определенных веб-страниц.

0
ответ дан 29 November 2019 в 01:18
поделиться

После того, как я прекрасно понял, как уничтожать сессии в веб-браузере C #, я успешно использовал код:

webBrowser.Navigate("javascript:void((function(){var a,b,c,e,f;f=0;a=document.cookie.split('; ');for(e=0;e<a.length&&a[e];e++){f++;for(b='.'+location.host;b;b=b.replace(/^(?:%5C.|[^%5C.]+)/,'')){for(c=location.pathname;c;c=c.replace(/.$/,'')){document.cookie=(a[e]+'; domain='+b+'; path='+c+'; expires='+new Date((new Date()).getTime()-1e11).toGMTString());}}}})())")

как сказано для Джордана Милна в этой теме выше.

В моем приложении мне нужно использовать webbrowser1.navigate ("xxx");

здесь не работают, если вы используете свойства C #.

Надеюсь, вам пригодится эта информация.

0
ответ дан 29 November 2019 в 01:18
поделиться

Отображает ли элемент управления веб-обозревателя страницы, образующие несколько сайтов, которые вы, как разработчик, не контролируете, или вы просто используете элемент управления веб-обозревателя для просмотра пользовательских HTML-страниц, созданных в вашем приложении ?

В первом случае файлы cookie напрямую привязаны к домену, который их устанавливает, и поэтому для удаления этих файлов cookie вам необходимо будет отслеживать каталог файлов cookie пользователей и удалять любые новые созданные файлы cookie, отслеживать изменения в существующих файлах cookie.

Если это позднее, вы всегда можете отправить элемент управления веб-браузера на настраиваемую страницу, которая удаляет файлы cookie либо с помощью сценариев на стороне сервера (если они доступны в вашем приложении), либо с помощью JavaScript.

1
ответ дан 29 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: