有关flash无法读取FireFox中Cookie的Bug解决方法
2009-01-04 19:17:34 来源:WEB开发网我之前写过文章“[AS3]有关Flash无法读取Firefox中的Cookie的Bug ”,关于这个Bug目前有一个变通的解决方法:
/**
* @author Kinglong
* @version 0.1
*/
package PRoject.util {
import com.klstudio.util.StringUtil;
import flash.external.ExternalInterface;
public class UploadUtil{
public function UploadUtil() {
}
public static function fixNoIEBug(url:String):String {
var index:int = url.indexOf("?");
url += (index == -1)?"?ie=":"&ie=";
url += (isIE())?"1":"0" + getCookies();
return url;
}
public static function isIE():Boolean {
if (!ExternalInterface.available) {
return true;
}
return ExternalInterface.call("navigator.appVersion.indexOf","MSIE") != -1;
}
public static function getCookies():String {
if (!ExternalInterface.available) {
return "&c_userid=&c_passWord=";
}
var result:String = "";
var cookieStr:String = ExternalInterface.call("function(){return document.cookie;}");
var cookies:Array = cookieStr.split(';');
var count:uint = 0;
for (var i:uint = 0; i < cookies.length; i++ ) {
var items:Array = cookies[i].split('=');
if (StringUtil.trim(items[0]) == "c_userid" || StringUtil.trim(items[0]) == "c_password") {
result += "&" + StringUtil.trim(items[0]) + "=" + StringUtil.trim(items[1]);
count ++;
}
if (count >= 2) {
break;
}
}
return result;
}
}
}
看上面的代码就知道原理很简单,就是先判断是否为IE浏览器,如果是的话,服务端就通过正常的方式来读取Cookie值,否则的话,就通过客户端JS方法把cookie取到,然后再通过url传给服务端。
赞助商链接