如何与Flash客户端进行会话?

时间:2010-01-28 23:04:02

标签: flex flash http session cookies

由于Flash Player(或者更确切地说,URLLoader class)不允许您读取服务器设置的HTTP响应标头或cookie,并且您通过某些解决方法(例如{{{{{})获取会话Cookie。 3}},您无法将其发送到服务器,因为reaching out to the browser and run JSCookie标题将被阻止。

现在,我正在针对我的服务器产品的HTTP API构建Flex客户端。我控制双方,所以我可以克服上述限制,现在我想知道如何。我看到以下选项:

  1. 在HTTP有效负载中包含会话令牌
  2. 在网址
  3. 中包含令牌
  4. 使用Socket
  5. 在AS中构建我的自己的 HTTP客户端(...带有二十一点和妓女......)

    我不喜欢(1),因为我正在重新实现我已经内置到Struts中的协议中的功能,我正在使用它来实现服务器端。然后我必须确保两者的行为方式相同,或者关闭通常的会话管理方式,并强制其他客户端使用我的协议,他们可以让浏览器处理它。

    我不喜欢(2),因为我知道这有安全问题,尽管among others

    我不喜欢(3),因为它是2010年,大量的HTTP客户端都是由比我更聪明的人编写的。

    那么,还有其他机会吗?我觉得哪个“不喜欢”你认为最不严重?有没有办法减轻我列出的问题?例如,URL中的会话令牌有多不安全?

2 个答案:

答案 0 :(得分:1)

使用FlashVars参数怎么样?它被明确地设计为将简单数据传递到Flash应用程序中,当页面在服务器端生成时,将会话令牌嵌入到标记中是微不足道的。从PHP开始,它就像是

<embed href="movie.swf" flashvars="sessionID=<?= session_id(); ?>">blah blah blah</embed>

这样,电影的网址中没有可能通过引荐来泄露的会话数据,并且数据已经“存在”,因此应用程序无需与浏览器联系并与之交谈。如果有人在嗅探源HTML页面以获取数据,他们可能会从HTTP头中获得相同的信息。

Adob​​e文档中有更多详细信息here

答案 1 :(得分:0)

你的一些帖子可能没有我,但你知道Shared Objects

“SharedObject类用于在用户的计算机或服务器上读取和存储有限数量的数据。共享对象提供多个客户端SWF文件与本地计算机或远程上持久的对象之间的实时数据共享本地共享对象类似于浏览器cookie,远程共享对象类似于实时数据传输设备。