2011-01-05 14 views
6

Zacznę od wyjaśnienia, scenariusz:Programowo ustawione cookies w Internet Explorer

Mam przeglądarkę IE komputerowego A. Wewnątrz IE Mam plugin, więc mogę uzyskać dostęp do obiektu dokumentu, więc może pobrać ciasteczko w określonym czasie.

Chcę przesłać ten plik cookie do nowej przeglądarki na innym komputerze B.

Aby uruchomić przeglądarkę w nowym komputerze BI wykorzystać obiekt InternetExplorer mogę kontrolować przeglądarkę za pomocą instancji obiektu, ale nie wiem jak "wstrzyknąć" plik cookie z pierwszego komputera A do nowo utworzonej przeglądarki IE.

Próbowałem na dwa sposoby.

  • Najpierw próbowałem napisać cookie przed uruchomieniem przeglądarki przy użyciu WinINet API InternetSetCookie.

  • a po drugie, próbowałem przechwycić BeforeNavigate2 zdarzenie i ustawić cookie w nagłówku żądania HTTP.

Ale żaden z nich nie pracował :(

Czy to możliwe, aby ustawić cookie w nowym Internet Explorer przed przejdź do strony internetowej, a zatem być w stanie utrzymać Sesión użytkownik miał w poprzedniej komputer

Dzięki :)

UPDATE: nadal mam ten problem i czy jakieś inne badania przy użyciu Wireshark.

W przypadku BeforeNavigate2, IExplore po prostu zignoruje wartość "Cookie:" w nagłówku.

W przypadku InternetSetCookie wygląda na to, że działa poprawnie. Tworzy ten sam plik, który tworzy regularna nawigacja IExplore, ale kiedy przejdziesz do tej strony, IE ignoruje plik, który zawiera plik cookie.

Kod używam napisać cookie jest:

string cookie = "COOKIEVALUES"; 
InternetSetCookie("http://www.facebook.com/", "", cookie+";expires=Sat, 08-Jan-2014 00:00:00 GMT"); 

Odpowiedz

3

InternetSetCookie() powinien być właściwy sposób to zrobić. Czy zweryfikowałeś, że ustawiasz prawidłowe wartości? Czy używasz kanonicznego adresu URL? Czy określasz datę wygaśnięcia? Niepoprawny adres URL (nie jestem pewien, czy rzeczy takie jak końcowe, czy nie) będą miały oczywiste konsekwencje, a jeśli nie ustawisz daty wygaśnięcia, plik cookie będzie przechowywany w pamięci tylko dla bieżącego procesu.

+0

Nie jestem do końca pewien. Muszę sprawdzić, jak działają zapisane pliki cookie. Ale próbowałem skopiować plik cookie na komputerach i nie działał: -S – HyLian

+0

Nie mogę pracować z tą metodą. Na początek nie jestem całkowicie pewien, które z nich są ciasteczkami danej strony. – HyLian

0

Najpierw spróbuj użyć narzędzia takiego jak IEdebugBar - pokaże on wszystkie wysłane i odebrane nagłówki w czysty sposób.

Po drugie, czy zweryfikowałeś, że cooky nie zostanie wysłany na serwer? Ponieważ wydaje się, że próbujesz "ukraść" sesję na Facebooku, zakładam, że Facebook zignoruje ciasteczko sesyjne pochodzące z przeglądarki o innym IP, UserAgent itd. Czy wziąłeś to pod uwagę?

+0

Śledzę żądania za pomocą wireshark, więc widzę prawdziwy nagłówek http i ciasteczko nie jest wysyłane :(Jeśli wysyłam ten sam plik cookie przy użyciu skryptu, to faktycznie działa. Problem polega na tym, że IE nie chce wysyłać plik cookie, który wskazuję, aby wysłać ... – HyLian

+0

Czy taka-data uciekła we właściwy sposób? Czy wypróbowałeś NULL zamiast ""? "(znalazłem to w przykładzie na msdn) i poprosiłem oyu o usunięcie spacja od daty wygaśnięcia (między "Sat" i "08-") - InternetSetCookie ("http://msdn.microsoft.com", NULL, "TestData = Test, expires = Sat, 06-Jan- 2007 00:00:00 GMT "); – rdmueller

+0

Tak, próbowałem tego. Rzeczywiście, jeśli nie ustawisz daty wygaśnięcia poprawnie, metoda InternetSetCookie zwróci błąd. – HyLian

0

http://social.msdn.microsoft.com/Forums/ar/ieextensiondevelopment/thread/d46f0797-5ddb-40c0-af71-2178fa019da8

Sprawdź ten tekst

Po porównując 2 środowiskach, gdzie kod i działa i gdzie nie odkryłem, że na komputerze, na którym kod nie działa I mam katalog Cookies pod moim kontem użytkownika i widzę plik z ciasteczka, którego nie mogę wymazać.

Na innym komputerze, na którym działa kod, nie mam katalogu Pliki cookie pod użytkownikiem zalogowanym, mimo że widzę plik pod katalogu tymczasowych plików internetowych.

Powiązane problemy