2010-11-23 28 views
1

J'utilise une petite application C++ que je me suis écrit en utilisant VS 2010. Cette application accède à un site Web via HTTPS en utilisant ces fonctions:C++: Cookie pas stocké dans une machine, mais stockée dans un autre

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

L'application fonctionne très bien depuis 2 ans sur une machine 32 bits fonctionnant à l'origine - Win XP et actuellement Win 7. Mais cela ne fonctionnera pas sur une machine Win7 64 bits, bien qu'il soit toujours configuré pour générer du code exécutable 32 bits: l'application ne parvient pas à se connecter au site Web.

En vérifiant avec un sniffer de trafic HTTP, j'ai remarqué qu'une demande est faite sans le cookie défini par le site Web.

Ma question est, où le cookie est-il stocké normalement? Comme je l'ai dit, je n'utilise aucune bibliothèque, seulement les fonctions mentionnées ci-dessus.

Et quelle pourrait être la raison de ne pas stocker le cookie dans la deuxième machine?

Nous vous remercions de votre aide!

+0

WinInet est la lib que vous utilisez – Eugene

Répondre

0

Voir Managing Cookies dans MSDN. Il explique que les cookies résident dans AppData \ Roaming \ Microsoft \ Windows \ Cookies \ Low

Je ne vois pas pourquoi le mécanisme de cookie pourrait échouer sur x64. Je m'attendrais plutôt à ce qu'une option de configuration locale (IE) soit en vigueur qui désactive l'utilisation de cookies pour ce site (par exemple, le site se trouvant dans une zone différente, ou le cookie étant considéré comme une tierce partie).

+0

Bizarre, la machine 32 bits qui exécute l'application en douceur n'a pas de dossier "cookies" dans AppData \ Roaming \ Microsoft \ Windows ... Donc je suppose que le cookie est enregistré ailleurs. Je me demande s'il pourrait être sauvé dans la mémoire du fil .. – Wartin

+0

Résolu! En effet, ce sont les paramètres IE qui limitent l'utilisation des cookies. – Wartin

+0

Les cookies seront probablement stockés dans la mémoire de processus (probablement associée au HINTERNET, sur le tas) s'ils sont des cookies de session (c'est-à-dire supposés disparaître lorsque le navigateur est fermé, ce qui correspond probablement à InternetCloseHandle). Seuls les cookies persistants devraient vivre sur le disque. –