2010-12-11 42 views
8

我有一个Flex应用程序,我将它移植到空中,除了根标签是WindowedApplication而不是Application外,两个应用程序是相同的。在Flex中工作但不在空中工作的Cookie

问题是基于cookie /会话的登录在浏览器中为flex应用程序工作,但不适用于空中应用程序。阅读文档说,cookie可用于播放,URLRequest manageCookies默认为true。

那么有没有人有任何想法,这是不是在空气中工作?

** * ** * ** * ** * *UPDATE* ** * ** * ** * ** * ****

我已经进一步调查,结果是Cookie在Air中工作,并在登录后用于所有后续请求,但是Cookie不能在应用程序关闭后继续存在,并且用户在重新启动时需要重新登录。

所以问题2,这是预期的行为?如果是这样,我会考虑将Cookie信息存储在EncrptedLocalStore中或其他东西。

** * ** * ** * ** * *UPDATE* ** * ** * ** * ** * ****

干杯,

克里斯

+2

Cookies是一个浏览器发明。在AIR中,没有浏览器,因此会假定没有Cookie。您可能能够将cookie值从您的返回请求中提取出来,以某种方式将其存储在本地,并将它们作为标题添加到每次远程调用中。或者寻找服务器端会话的替代方案。 – JeffryHouser 2010-12-11 15:58:51

+0

空气建立在Webkit之上。这也不是什么在这里建议 - http://blogs.adobe.com/simplicity/2010/08/single-sign-on-and-http-cookies-in-air-applications.html – ChrisInCambo 2010-12-11 23:16:56

+0

或在这里 - http:// help.adobe.com/en_US/air/reference/html/flash/net/URLRequestDefaults.html#manageCookies – ChrisInCambo 2010-12-11 23:18:03

回答

0

您可以使用HTML control存储OT检索cookie。这些cookies来自系统默认浏览器。

+0

我没有从Rails加载HTML,我正在加载通过HTTP调用的RubyAMF服务。有一个名为manageCookies的Air属性,其默认值为true,这使我相信Air中存在cookie支持 - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest .html?filter_flex = 4.1&filter_flashplayer = 10.1&filter_air = 2#manageCookies – ChrisInCambo 2010-12-11 23:26:35

+0

完全是因为您需要使用cookie,您必须使用额外的控件来实现cookie机制。你可以让它看起来不可见,并行使用它,例如捕捉整个事件,然后做基础事情。 – Lex 2010-12-12 00:46:17

3

“空气从 操作系统拿起Cookie设置,而不是浏览器。 碰巧虽然有些 浏览器也使用操作系统 设置/饼干。“

http://help.adobe.com/en_US/air/reference/html/flash/net/URLRequest.html#manageCookies

http://prsync.com/adobe/more-on-sharing-http-cookies-with-air-applications-107386/

我进一步研究和事实证明 出饼干在空气中工作,用于 登录后的所有后续请求 ,但饼干 在应用程序关闭后仍然存在 ,并且用户在重新启动时需要再次登录 。

所以问题2,这是预期的 的行为?如果是这样,我会考虑将 存储在 EncrptedLocalStore或其他东西。

是的,继续使用EncrptedLocalStore。

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/data/EncryptedLocalStore.html

更新

http://blogs.adobe.com/simplicity/2010/08/single-sign-on-and-http-cookies-in-air-applications.html

相关问题