Pregunta

Estoy intentando configurar una página php que utiliza cURL para acceder a un servidor de terceros para iniciar sesión. En este momento, mi código se conecta correctamente al servidor de terceros, pero dado que cURL no envía las cookies de SESIÓN a usuario, el usuario debe iniciar sesión en sí mismos

¿Cómo puedo hacer que cURL reenvíe cookies al cliente? Gracias

¿Fue útil?

Solución

Consulte la documentación para las siguientes opciones de cURL :

CURLOPT_COOKIE
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR

EDIT

Después de leer su pregunta más a fondo, me temo decirle que NO hay forma de escribir las cookies en el navegador del cliente a menos que redirija al cliente al sitio en el que intenta autorizarlas. Las cookies del navegador funcionan en un modelo de seguridad conocido como Same Origin Policy . Esto básicamente significa que los dominios solo pueden emitir cookies para sus PROPIOS dominios y no pueden emitir cookies para otros dominios. En su caso particular:

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)

¡Básicamente, foo.com NO PUEDE crear cookies en el cliente para bar.com!

Otros consejos

El navegador del usuario probablemente no le permitirá configurar cookies para otro dominio de todos modos.

Puede, en su código PHP, iniciar sesión y recuperar una cookie de sesión para (por ejemplo) Hotmail. Pero no podrá pasar esa sesión al usuario (por lo que él / ella también estaría conectado).

Esto se debe a que muchos navegadores y configuraciones niegan la configuración de cookies de terceros.

Puede configurar la cookie en el navegador del usuario sin redirigirlo al servidor. lo que debe hacer es lograr que el usuario acceda a su página php con el código curl. entonces puede tomar sus datos de publicación y enviarlos al servidor. Pero no dejes que el servidor te redirija. Establezca la opción como CURLOPT_FOLLOWLOCATION como falso y establezca CURLOPT_HEADER como verdadero Ahora tome el encabezado y extraiga los cookies y los encabezados de ubicación y luego páselos como encabezados al navegador del cliente como encabezado (" Ubicación: ...) y encabezado (" Set-Cookie: ....). También puede enviar otros encabezados extrayéndolos también. la siguiente [publicación] la página html no recibe cookies a través de libcurl tiene una situación similar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top