问候。
我遇到一个问题,即当通过firefox运行时,flash播放器不包含HTTP cookie。这些都包含在通过Internet Explorer运行时。
我想知道在与Flash服务器通信时是否有人知道如何强制flash包含cookie?
我们有一个连接到red5服务器的闪存记录器。这些连接通过负载均衡器打开,负载均衡器提供池地址。池中有多个服务器。
录像机使用RTMPT协议发送数据。这通过HTTP发送RMTP(这允许防火墙遍历)。为确保数据到达正确的服务器,我们使用基于cookie的负载平衡。如果存在某个cookie,则负载均衡器会将连接定向到正确的服务器。
当用户通过其Web浏览器登录网站时,将设置此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 - 如果是这样 - 有谁能告诉我怎么做?
到目前为止,我花了几个小时用谷歌搜索没有运气的解决方案 - 希望有人在这里可能有一个想法:-)
感谢您的时间,如果您需要更多信息,请告诉我。
答案 0 :(得分:1)
您是否看过为什么没有发送cookie?这是不是因为你正在使用负载平衡而域正在改变? Firefox只允许同一个域访问相同的cookie。
只是一个想法,希望它有所帮助。
皮特