Apache flex 从Flex访问浏览器cookie
我正在为一个私有vBulletin站点构建一个Flex小部件,Flex小部件需要访问vBulletin服务器上的XML文件才能显示数据 出于安全原因,XML URL需要在Flex的URL请求中传递bbsessionhash cookie中的值。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数据,因为它可能会有点混乱(模板是由完
有没有办法直接在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会给你带来安全错误和跨浏览器问题。这里有一个很好的例子