我正在为私有vBulletin网站构建Flex小部件,而Flex小部件需要访问vBulletin服务器上的XML文件才能显示数据。
出于安全原因,XML URL需要在来自Flex的URL请求中传递的bbsessionhash cookie中具有值。 Flex小部件将嵌入用户登录的私有区域,因此Flex请求将来自cookie所在的同一网站。
有没有办法直接在Flex中访问cookie?我宁愿不使用ExternalInterface从JavaScript中获取cookie数据,因为它可能会有点混乱(模板由完全不同的开发团队开发)。
答案 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文档。