English 中文(简体)
从Flex访问浏览器cookie
原标题:
  • 时间:2009-02-07 11:39:20
  •  标签:

我正在为私人 vBulletin 网站构建一个 Flex 小部件,该 Flex 小部件需要访问 vBulletin 服务器上的 XML 文件以显示数据。

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

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

最佳回答

我从未尝试过这个,但是这个库可能正好可以解决问题。

问题回答

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

访问Flex SharedObject并不等同于访问浏览器cookies,要访问浏览器cookies,您可以使用ExternalInterface类,请参阅以下参考示例:

将此翻译为中文:http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_4.html

在这里可以找到使用和控制JavaScript中的cookie的参考资料:

将此翻译为中文:http://www.quirksmode.org/js/cookies.html。 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文档。





相关问题
热门标签