Question

J'essaie de configurer une page php qui utilise cURL pour frapper un serveur tiers afin de les connecter. Actuellement, mon code se connecte correctement au serveur tiers, mais cURL n'envoie pas les cookies de SESSION au utilisateur, l'utilisateur doit se connecter lui-même

Comment puis-je obtenir que cURL transmette des cookies au client? Merci

Était-ce utile?

La solution

Consultez la documentation pour connaître les options cURL suivantes. :

CURLOPT_COOKIE
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR

MODIFIER

Après avoir lu votre question de manière plus approfondie, j’ai peur de vous dire qu’il n’ya AUCUN moyen d’écrire les cookies dans le navigateur du client, sauf si vous redirigez le client vers le site sur lequel vous essayez de l’autoriser. Les cookies du navigateur fonctionnent sur un modèle de sécurité connu sous le nom de Règles d'origine même . Cela signifie essentiellement que les domaines ne peuvent émettre de cookies que pour leurs domaines OWN et ne peuvent pas émettre de cookies pour d'autres domaines. Dans votre cas particulier:

client --CONTACTS--> foo.com --cURL-LOGIN--> bar.com
bar.com --bar.com-COOKIE--> foo.com --foo.com-COOKIE--> client
client --foo.com-COOKIE--> bar.com (Will not work)

Fondamentalement, foo.com NE PEUT PAS créer de cookies sur le client pour bar.com!

Autres conseils

Le navigateur de l'utilisateur ne vous permettra probablement pas de définir des cookies pour un autre domaine.

Vous pouvez, dans votre code PHP, vous connecter et récupérer un cookie de session pour Hotmail (par exemple). Mais vous ne pourrez pas transmettre cette session à l'utilisateur (il / elle sera donc également connecté).

En effet, de nombreux navigateurs et configurations refusent de définir des cookies tiers.

Vous pouvez définir le cookie dans le navigateur de l'utilisateur sans le rediriger vers le serveur. Ce que vous devez faire, c'est amener l'utilisateur à frapper votre page php avec le code curl qu'il contient. alors vous pouvez prendre ses données de poste et envoyer ces données au serveur. Mais ne laissez pas le serveur vous rediriger. Définissez l'option sur CURLOPT_FOLLOWLOCATION sur false et sur CURLOPT_HEADER sur true. Maintenant, prenez l'en-tête et extrayez les en-têtes de cookie et d'emplacement, puis transmettez-les comme en-têtes dans le navigateur du client, tels que l’en-tête ("Emplacement: ...) et l’en-tête (" Set-Cookie: ....). vous pouvez également envoyer d'autres en-têtes en les extrayant également. [post] page html ne recevant pas de cookies via libcurl a une situation similaire

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top