BlazeDS由http切换https注意事项

本文介绍了一个在HTTPS环境下使用Flex与BlazeDS交互时遇到的问题及解决方案。当用户从HTTP切换到HTTPS环境时,应用程序会出现权限丢失及需要重新登录的问题。通过调整Flex配置,使用SecureAMFChannel替代AMFChannel,并根据协议类型动态选择通道,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这段时间准备发布产品,预览版已在用户那里部署。昨天接到一电话,说在https环境下,只要点击到和Flex有关的东西就老报错,然后权限消失,得重新登录。
得知这一问题后自己切换到https下观察,果然如此,而且只要是走BalzeDS AMF通道就必然报错且servelt session丢失。直观感觉应该是通道问题,随后开打BlazeDS配置文件,翻到services-config.xml文件时,发现了my-secure-amf通道,那么顺理成章的应该走这个。遂在Flex那里修改了AMFChannel对象的uri属性(要实现通道切换方法很多,这只是一种方式),由于需要统一通道,所以在修改AMFChannel的uri后还是不能解决问题,经过排查这里必须采用SecureAMFChannel对象才行,最后问题解决。那么要支持两种协议,就需要在flex中进行协议判定,通过不同的协议来切换不同的通道了。代码如下:
/**
* 处理协议
*/
private function init(){
var surl:String = ExternalInterface.call("eval", "window.location.href");
var cs:ChannelSet = new ChannelSet();
var c:Channel = null;
if(URLUtil.getProtocol(surl)=="https"){
c = new SecureAMFChannel();
c.uri="/SSS/messagebroker/amfsecure";
}else{
c = new AMFChannel();
c.uri="/SSS/messagebroker/amf";
}
cs.addChannel(c);
remote.channelSet=cs;
.;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值