Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 从Flex访问浏览器cookie_Apache Flex_Session_Cookies_Vbulletin - Fatal编程技术网

Apache flex 从Flex访问浏览器cookie

Apache flex 从Flex访问浏览器cookie,apache-flex,session,cookies,vbulletin,Apache Flex,Session,Cookies,Vbulletin,我正在为一个私有vBulletin站点构建一个Flex小部件,Flex小部件需要访问vBulletin服务器上的XML文件才能显示数据 出于安全原因,XML URL需要在Flex的URL请求中传递bbsessionhash cookie中的值。Flex小部件将嵌入用户登录的私有区域,因此Flex请求将来自cookie所在的同一网站 有没有办法直接在Flex中访问Cookie?我不希望使用ExternalInterface从JavaScript获取cookie数据,因为它可能会有点混乱(模板是由完

我正在为一个私有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类,请查看以下参考以查看示例:

有关如何使用JavaScript使用和控制Cookie的参考信息,请参见:

我将使用以下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);
  }
}
函数getCookie(c_名称){ 变量i,x,y,ARRcookies=document.cookie.split(“;”);
对于(i=0;这很完美,有趣的是,它实际上使用ExternalInterface将自己的cookie读写JavaScript函数写入包装器文档。但是,嘿,只要JS不必嵌入页面本身,我就可以了!谢谢!共享对象确实对你的健康更有益。cookie会给你带来安全错误和跨浏览器问题。这里有一个很好的例子