Quando si invia un modulo con URLRequest, come includere i cookie dalla sessione del browser?

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

  •  19-08-2019
  •  | 
  •  

Domanda

(Con riferimento a questa risposta :)

Quando invio un URLRequest, include automaticamente i cookie della sessione del browser in cui è ospitato Flash? In caso contrario, come posso fare per includerli o, se necessario, recuperarli e includerli io stesso?

È stato utile?

Soluzione

A condizione che i domini dei cookie (della pagina che ospita il controllo Flash e l'URL a cui stai postando) corrispondano, quindi sì, i cookie del browser vengono inviati con la richiesta per impostazione predefinita. Come esempio rapido ( versione funzionante qui ), ho creato una semplice pagina ColdFusion che ospita un SWF contenente il seguente codice:

<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" />

... e in quella pagina, ho impostato un cookie, chiamato "USERID", con un valore di "12345". Dopo aver fatto clic su Invia e aver navigato su un altro CFM, i registri del mio server rivelano il cookie trasmesso nella richiesta:

  

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

Se lo provi tu stesso, vedrai anche i postData.

Ha senso?

Altri suggerimenti

Suppongo che tu non voglia includere qualcosa come un ID di sessione per scopi di autenticazione sul lato server.

Per ottenere il cookie del browser da AS (è necessario abilitare JavaScript, non dovrebbe essere un problema per la maggior parte degli utenti)

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);

Quindi, quando si utilizza l'oggetto URLRequest:

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

Prendi nota che Firefox non invia i cookie della sessione insieme a una richiesta URL, per superare questo problema avrai bisogno di una soluzione simile a quella sopra.

Non sono sicuro del flash. Ma non potresti serializzare il cookie e inserirlo nell'URL?

Forse vorresti crittografare i dati o trasmetterli in testo semplice ma potrebbe apparire come:

URL:

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

etc

(o mi manca qualcosa?)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top