2010-11-23 3 views
1

ich eine kleine C++ app bin mit gespeichert, die ich selbst VS 2010 greift auf diese App hat eine Website über HTTPS diese Funktionen:C++: Plätzchen nicht in einer Maschine gespeichert, sondern in einem anderen

InternetOpen(), InternetConnect(), HttpOpenRequest(), HttpSendRequest(), 
HttpQueryInfo(), InternetReadFile() 

Die App lief in den letzten 2 Jahren gut auf einem 32-Bit-Rechner, der anfänglich Win XP und aktuell Win 7 lief. Aber es funktioniert nicht auf einem 64-Bit-Win 7-Rechner, obwohl es immer noch 32-Bit-Code ausführbar ist: die App kann nicht auf der Website einloggen.

Beim Überprüfen mit einem HTTP-Traffic-Sniffer habe ich festgestellt, dass eine Anfrage ohne den von der Website gesetzten Cookie erfolgt.

Meine Frage ist, wo ist das Cookie normalerweise gespeichert? Wie gesagt, ich benutze keine Bibliothek, nur die oben genannten Funktionen.

Und was könnte der Grund sein, den Cookie nicht in der zweiten Maschine zu speichern?

Vielen Dank für Ihre Hilfe!

+0

WinInet ist die Lib, die Sie verwenden – Eugene

Antwort

0

Siehe Managing Cookies in MSDN. Es erklärt, dass Cookies in AppData \ Roaming \ Microsoft \ Windows \ Cookies \ Low leben

Ich kann keinen möglichen Grund sehen, warum der Cookie-Mechanismus auf x64 fehlschlagen konnte. Ich würde eher erwarten, dass eine lokale Konfigurationsoption (IE) in Kraft ist, die die Verwendung von Cookies für diese Site deaktiviert (z. B. die Site in einer anderen Zone oder das Cookie als Drittanbieter).

+0

Seltsam, die 32-Bit-Maschine, die die App reibungslos läuft hat keine "Cookies" Ordner in AppData \ Roaming \ Microsoft \ Windows ... Also ich denke, der Cookie wird woanders gespeichert. Ich frage mich, ob es im Speicher des Threads gespeichert werden könnte. – Wartin

+0

Gelöst! Tatsächlich haben die IE-Einstellungen die Verwendung von Cookies eingeschränkt. – Wartin

+0

Cookies werden höchstwahrscheinlich tatsächlich im Prozessspeicher gespeichert (wahrscheinlich im Zusammenhang mit dem HINTERNET auf dem Heap), wenn es sich um Sitzungscookies handelt (d. H., Wenn der Browser geschlossen wird und wahrscheinlich mit InternetCloseHandle übereinstimmt). Nur persistente Cookies sollten auf der Festplatte gespeichert sein. –

Verwandte Themen