Доступ к файлам cookie браузера из Flex - PullRequest
13 голосов
/ 07 февраля 2009

Я создаю виджет Flex для частного сайта vBulletin, и для отображения данных виджету Flex необходим доступ к XML-файлу на сервере vBulletin.

В целях безопасности для URL-адреса XML должно быть указано значение в файле cookie bbsessionhash, передаваемое в запросе URL-адреса от Flex. Виджет Flex будет встроен в личную область, в которую вошел пользователь, поэтому запрос Flex будет поступать с того же веб-сайта, с которого отправлен файл cookie.

Есть ли способ получить доступ к файлам cookie напрямую во Flex? Я бы предпочел не использовать ExternalInterface для извлечения данных cookie из JavaScript, так как это может стать немного запутанным (шаблоны разрабатываются совершенно другой командой разработчиков).

Ответы [ 3 ]

13 голосов
/ 07 февраля 2009

Я никогда не пробовал этого, но эта библиотека может просто помочь.

2 голосов
/ 09 мая 2011

Что касается флеш-или flex-файлов cookie, разработчик может использовать общий объект, который является одним из типов cookie-файлов, используемых для приложения flex.

Пример кода приведен ниже

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.");
}
1 голос
/ 04 ноября 2011

Доступ к Flex SharedObject НЕ совпадает с доступом к файлам cookie браузера. Для доступа к файлам cookie браузера вы можете использовать класс ExternalInterface, пожалуйста, проверьте следующую ссылку, чтобы просмотреть примеры:

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

Справку о том, как использовать и контролировать файлы cookie с помощью JavaScript, можно найти здесь:

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

Я бы использовал следующий код Flex:

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

А в HTML я бы добавил следующий 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);
  }
}

Если вам требуется дополнительная помощь, вы также можете проверить документацию Flex.

...