13

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

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

有什么方法可以直接在 Flex 中访问 c​​ookie?我不希望使用 ExternalInterface 从 JavaScript 中获取 cookie 数据,因为它可能会有点混乱(模板是由完全不同的开发团队开发的)。

4

3 回答 3

13

我从来没有尝试过这个,但是这个库可能只是解决问题。

于 2009-02-07T12:02:54.860 回答
2

根据 flash 或 flex cookie,开发人员可以使用共享对象,这是一种用于 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.");
}
于 2011-05-09T16:11:11.540 回答
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 文档。

于 2011-11-04T02:19:15.230 回答