2009-02-07 14 views
12

Sto costruendo un widget Flex per un sito vBulletin privato e il widget Flex deve accedere a un file XML sul server vBulletin per visualizzare i dati.Accesso ai cookie del browser da Flex

Per motivi di sicurezza, l'URL XML dovrà avere il valore nel cookie bbsessionhash passato nella richiesta URL da Flex. Il widget Flex verrà incorporato nell'area privata in cui l'utente ha effettuato l'accesso, pertanto la richiesta Flex proviene dallo stesso sito Web dal quale proviene il cookie.

C'è un modo per accedere ai cookie direttamente all'interno di Flex? Preferirei non utilizzare ExternalInterface per prelevare i dati dei cookie da JavaScript, in quanto potrebbe risultare un po 'disordinato (i modelli sono sviluppati da un team di sviluppo completamente diverso).

risposta

12

Non ho mai provato questo, ma this library potrebbe semplicemente fare il trucco.

+0

Questo è perfetto, abbastanza interessante in realtà utilizza ExternalInterface per scrivere le proprie funzioni JavaScript di lettura/scrittura di cookie per il documento wrapper. Ma hey, finché il JS non deve essere incorporato nella pagina stessa, va bene per me! Grazie! –

2

Secondo i cookie flash o flex, lo sviluppatore può utilizzare l'oggetto condiviso, che è un tipo di cookie utilizzato per l'applicazione flessibile.

Il frammento di codice di esempio è la followes

import flash.net.SharedObject; 

// get/create the shared object with a unique name. 
// If the shared object exists this grab it, if not 
// then it will create a new one 
var so: SharedObject = SharedObject.getLocal("UniqueName"); 

// the shared object has a propery named data, it's 
// an object on which you can create, read, or modify 
// properties (you can't set the data property itself!) 
// you can check to see if it already has something set 
// using hasOwnProperty, so we'll check if it has a var 
// use it if it does, or set it to a default if it doesn't 
if (so.data.hasOwnProperty("theProp")) 
{ 
    trace("already has data! It reads: " + so.data.theProp); 
} 
else 
{ 
    so.data.theProp = "default value"; 
    so.flush(); // flush saves the data 
    trace("It didn't have a value, so we set it."); 
} 
+0

SharedObjects è meglio per la tua salute. I cookie ti daranno errori di sicurezza e problemi con i browser. Bel esempio qui http://livedocs.adobe.com/flex/3/html/help.html?content=lsos_5.html – MonoThreaded

1

Accedere a Flex SharedObject non è lo stesso di accedere ai cookie del browser, per accedere ai cookie del browser, è possibile utilizzare la classe ExternalInterface, verificare il seguente riferimento alla vedere i campioni:

http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_4.html

Un riferimento di come utilizzare e biscotti di controllo utilizzando JavaScript può essere trovato qui:

012.

http://www.quirksmode.org/js/cookies.html

vorrei utilizzare il seguente codice di Flex:

var myCookie:String = ExternalInterface.call("getCookie('cookieName')"); 

E nel codice HTML vorrei aggiungere il seguente JavaScript:

function getCookie(c_name) { 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) { 
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x==c_name) return unescape(y); 
    } 
} 

Se avete bisogno di più aiuto si potrebbe anche verificare la Documentazione Flex.