从Flex访问浏览器Cookie

时间:2009-02-07 11:39:20

标签: flex session cookies vbulletin

我正在为私有vBulletin网站构建Flex小部件,而Flex小部件需要访问vBulletin服务器上的XML文件才能显示数据。

出于安全原因,XML URL需要在来自Flex的URL请求中传递的bbsessionhash cookie中具有值。 Flex小部件将嵌入用户登录的私有区域,因此Flex请求将来自cookie所在的同一网站。

有没有办法直接在Flex中访问cookie?我宁愿不使用ExternalInterface从JavaScript中获取cookie数据,因为它可能会有点混乱(模板由完全不同的开发团队开发)。

3 个答案:

答案 0 :(得分:13)

我从未尝试过这个,但是this library可能就是这样做的。

答案 1 :(得分:2)

根据flash或flex cookies的关注,开发人员可以使用共享对象,这是一种用于flex应用程序的cookie。

示例代码段如下:

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.");
}

答案 2 :(得分:1)

访问Flex SharedObject与访问浏览器cookie不同,访问浏览器cookie,您可以使用ExternalInterface类,请查看以下参考以查看示例:

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

有关如何使用JavaScript使用和控制cookie的参考资料,请访问:

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文档。

相关问题