Al PUBLICAR un formulario con URLRequest, ¿cómo incluir cookies de la sesión del navegador?

StackOverflow https://stackoverflow.com/questions/467449

  •  19-08-2019
  •  | 
  •  

Pregunta

(Con referencia a esta respuesta :)

Cuando PUBLICO con una URLRequest, ¿incluye automáticamente las cookies de la sesión del navegador en la que se aloja Flash? Si no es así, ¿cómo puedo hacer que los incluya o, si es necesario, recuperarlos e incluirlos yo mismo?

¿Fue útil?

Solución

Siempre que los dominios de cookies (de la página que aloja el control Flash y la URL en la que está publicando) coincidan, entonces sí, las cookies del navegador se envían con la solicitud de forma predeterminada. Como ejemplo rápido ( versión de trabajo aquí ), he creado una página simple de ColdFusion que aloja un SWF que contiene el siguiente código:

<mx:Script>
    <![CDATA[

        private function btn_click():void
        {
            var req:URLRequest = new URLRequest("http://test.enunciato.org/test.cfm");
            req.method = URLRequestMethod.POST;

            var postData:URLVariables = new URLVariables();
            postData.userName = "Joe";
            postData.userCoolness = "very-cool";

            req.data = postData;
            navigateToURL(req);
        }

    ]]>
</mx:Script>

<mx:Button click="btn_click()" label="Submit" />

... y en esa página, configuré una cookie, llamada "USERID", con un valor de "12345". Después de hacer clic en Enviar y navegar a otro CFM, los registros de mi servidor revelan la cookie que se pasó en la solicitud:

  

POST /test.cfm HTTP / 1.1 Mozilla / 5.0
  ASPSESSIONIDAASRDSRT = INDFAPMDINJLOOAHDELDNKBL;
  JSESSIONID = 60302395a68e3d3681c2;
   USERID = 12345
  test.enunciato.org 200

Si lo prueba usted mismo, verá los datos posteriores allí también.

¿Tiene sentido?

Otros consejos

Supongo que solo desea incluir algo como una identificación de sesión para fines de autenticación en el lado del servidor.

Para obtener la cookie del navegador de AS (necesita javascript activado, no debería ser un problema para la mayoría de los usuarios)

public var cookieStr:String;
public var cookieHeader:URLRequestHeader;
ExternalInterface.call('eval','window.cookieStr = function () {return  document.cookie};')
cookieStr = ExternalInterface.call('cookieStr'); 
cookieHeader = new URLRequestHeader("Cookie",cookieStr);

Luego, cuando use su objeto URLRequest:

var urlRequest:URLRequest = new URLRequest(...blah blah, url here, etc etc);
urlRequest.requestHeaders.push(cookieHeader);

Tenga en cuenta que Firefox no envía las cookies de la sesión junto con una URLRequest, necesitará una solución similar a la anterior para resolver este problema.

No estoy seguro sobre el flash. ¿Pero no podría serializar la cookie y ponerla en la URL?

Quizás desee cifrar los datos o transmitirlos en texto sin formato, pero podría verse así:

url:

www.example.com?newurl&cookiesession=true&cookieusername=bob

etc.

(¿o me falta algo?)

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