Comment puis-je définir et supprimer des cookies pour un domaine dans le contrôle WebBrowser sans utiliser JavaScript ( qui ne permet pas de définir / supprimer des cookies sans naviguer sur le site Web d'abord. P>
6 Réponses :
Vous ne pouvez pas supprimer des cookies pour un domaine autre que le domaine du site actuel. P>
Pour faire ce que vous demandez nécessite que vous ayez accès à la machine (c'est-à-dire la barre d'outils installée). Même alors c'est kludgy. p>
La seule exception est que si vous êtes sur un domaine où le cookie utilise le * Wildcard, par exemple * .stackoverflow.com. Si vous changez de cookie avec la carte générique, tous les sous-domaines de l'enfant (c'est-à-dire blog.stackoverflow.com) auront accès et voir le changement apporté au cookie. P>
De "WebBrowser Control", ce n'est pas une application Web, il s'agit de WinForms.
IE Utilise les fonctions Wininet pour la mise en réseau afin que vous puissiez utiliser Le cookie de Wininet fonctionne pour changer le cookie. MISE À JOUR: L'exigence exige un paramètre par processus. Étant donné que l'emplacement du dossier de cache n'est pas stocké dans IE Settings Registry Key Idochostuihandler2 :: GeoverRidekeyypath ne fonctionnera pas. Je ne connais pas un moyen de personnaliser l'emplacement du dossier de la cookie au niveau du processus, sauf pour accrocher toutes les API Wininet (et Stuck avec la mise à jour de l'application pour accueillir les futurs API Wininet). p>
N'est-ce pas pour ça que c'est-à-dire? Je ne veux pas supprimer les cookies du navigateur des utilisateurs pour IE, il ne devrait s'agir que pour le contrôle Web hébergé de l'application actuelle. Corrige moi si je me trompe.
Si vous souhaitez isoler les cookies de votre application, vous devez remplacer le paramètre de registre de la répertoire de cache via idochostuihandler2 :: getoverRideKeyPathe
Je ne suis pas certain que le truc GeoverRidekeyPathe fonctionnerait même. Vous voudrez utiliser InnetSetCookieEx de toute façon.
Oui, vous avez raison, le paramètre dossier de cache IE n'est pas sous Paris. Il est sous les paramètres de dossier Shell.
Voici un article de blog sur la manière de supprimer les cookies dans le contrôle WebBrowser à l'aide de Wininet. P>
Le lien est aussi mort maintenant. Veuillez inclure une solution à os nus lors de la publication d'un lien externe.
J'espère que cela aide
using System.Runtime.InteropServices; namespace Storm8 { class Program { [DllImport("wininet.dll", SetLastError = true)] private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength); [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool InternetGetCookie( string lpszUrlName, string lpszCookieName, StringBuilder lpszCookieData, [MarshalAs(UnmanagedType.U4)] ref int lpdwSize ); [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool InternetSetCookie( string lpszUrlName, string lpszCookieName, string lpszCookieData ); [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool InternetSetOption( int hInternet, int dwOption, string lpBuffer, int dwBufferLength ); [STAThread] static void Main(string[] args) { InternetSetOption(0, 42, null, 0); InternetSetCookie("http://domain.name.com", "cookiename", "cookievalue"); WebBrowser wb = new WebBrowser(); string testUrl = "http://domain.name.com/fight.php?showAttackBg=true"; string additionalHeaders = "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit /528.18 (KHTML, like Gecko) Mobile/7A341" + Environment.NewLine + "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + Environment.NewLine + "Accept-Language: en-gb"; if (wb.Document == null) wb.Navigate(testUrl, null, null, additionalHeaders); while (wb.Document == null) Application.DoEvents(); Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(true); } } }
Je n'ai pas compris .. Comment puis-je supprimer un cookie d'une URI?
réussi à accomplir cette tâche en combinant ces 2: p>
http://support.microsoft.com/kb/815718 p>
et internet_option_end_browser_session - http: //msdn.microsoft.com/en-us/library/windows/desktop/aa385328(v=vs.85).aspx p>
J'ai traversé les URL mais je n'ai trouvé aucune solution. Pouvez-vous s'il vous plaît me donner la brève solution. J'ai eu frappé le même problème de 10 derniers jours
@ Dr.Evil Pouvez-vous fournir un résumé sur ce que vous avez fait pour résoudre ce problème? ... LIEN Seule les réponses ne sont pas si bonnes.
Voici une solution plus fine qui n'effectue que les cookies (C / C ++): Tous les crédits sur Ce blog post (C #). N'oubliez pas de vérifier la documentation pour interneetoption et internet_suppress_cookie_persist P> p>
Cela n'efface pas les cookies. Ça fait autre chose. Pendant votre processus, les cookies normalement persistants ne seront pas persistés. Mais les cookies qui sont déjà là, déjà stockés, ne sont pas affectés du tout. Essayez simplement de courir et d'afficher la liste réelle des cookies dans les options Internet.
Quelle est votre exigence / scénario pour cela? "Du contrôle WebBrowser" pourrait ne pas être nécessaire. Avez-vous le contrôle du site? Si vous le faites, vous pouvez ajouter et supprimer des cookies de HTTPRequest et que API vous permet de spécifier le domaine de la cookie.
J'ai un navigateur et je tiens à ajouter la possibilité de modifier tous les cookies pour un site Web donné.