3

问候。

我有一个问题,即通过 Firefox 运行的 Flash 播放器不包括 HTTP cookie。这些在通过 Internet Explorer 运行时包括在内。

我想知道是否有人知道在与 Flash 服务器通信时如何强制 Flash 包含 cookie?

背景资料

我们有一个连接到 red5 服务器的闪存记录器。这些连接是通过提供池地址的负载平衡器打开的。池中有多个服务器。

记录仪使用 RTMPT 协议发送数据。这会通过 HTTP 发送 RMTP(这允许防火墙穿越)。为了确保数据到达正确的服务器,我们使用了基于 cookie 的负载平衡。如果存在某个 cookie,负载平衡器会将连接定向到正确的服务器。

当用户通过其网络浏览器登录网站时会设置此 cookie。然后,Flash 播放器在与服务器通信时将这些 cookie 包含在 RTMTP HTTP 请求中。这可确保打开到正确服务器的 RMTPT 连接。

使用 fiddler,我抓取了一些流量(来自 IE)来说明我的意思:
POST http://hostname/idle/31283773/0 HTTP/1.1
Content-Type: application/x-fcs
User-Agent: Shockwave Flash
Host: host
Content-Length: 1
Connection: Keep-Alive
Pragma: no-cache
Cookie: JSESSIONID=sessionid; target-server=target-server-value

不幸的是,当使用 Firefox 时,cookie 不包含在服务器的流量中:
POST http://hostname/idle/31283773/0 HTTP/1.1
Content-Type: application/x-fcs
User-Agent: Shockwave Flash
Host: host
Content-Length: 2030
Connection: Keep-Alive
Pragma: no-cache

播放器是用动作脚本编写的,并通过 javascript/HTML 进行初始化。我们使用 NetConnection / NetStream 与服务器对话。

我可以访问加载闪存记录器的 HTML / javascript 中的目标服务器 ID,但对于我来说,我无法弄清楚在发送 RTMPT 数据时如何包含 cookie,甚至这样的事情是可能的。

我想知道的

谁能告诉我:
1 - 是否可以指示闪存记录器在与闪存服务器交谈时包含某些 cookie?它们在通过 IE 运行时会自动包含在内。
2 - 如果是这样 - 谁能告诉我怎么做?

到目前为止,我已经花了几个小时在谷歌上搜索没有运气的解决方案 - 希望这里的人可能有一个想法 :-)

感谢您的时间,如果您需要更多信息,请告诉我。

4

1 回答 1

1

您是否查看过为什么没有发送 cookie?这不是因为您正在使用负载平衡并且域正在更改吗?Firefox 只允许同一个域访问同一个 cookie。

只是一个想法,希望它有所帮助。

皮特

于 2010-11-21T15:11:28.253 回答