Flash Player是否自动传输会话cookie?

Han*_*etz 16 cookies flash session

Flash影片中无法访问HTTP Cookie,但我现在已经反复阅读过,Flash Player应该自动处理会话cookie.但是,我没有找到任何关于此的文档,并且它肯定不适用于使用默认JSESSIONID cookie运行Struts后端的Flex客户端.

那么,Flash Player是否处理会话cookie或不处理会话cookie,如果是,我该如何设置?

Ama*_*osh 6

来自Flash的HTTP请求通过浏览器发送 - 所以是的,cookie会自动传输.事实上,我目前正在做一个处理HTML页面登录(并因此设置会话cookie)的站点,然后将用户转发到仅Flash页面().Flash页面使用URLLoader&向服务器发送大量请求,URLRequest并且我能够验证每个请求的会话cookie.

也就是说,您可以使用ExternalInterface.call()从Flash访问HTTP cookie .确保SWF嵌入代码中的allowScriptAccess设置为适当的值.

var cookies:String = ExternalInterface.call("function()
    {
        return document.cookie;
    }()");
Run Code Online (Sandbox Code Playgroud)

更新:我没有尝试过(在flash中登录),但你可能是对的 - Flash可能忽略了Set-Cookie(或所有)响应头.不幸的是,Flash也不允许我们访问响应头.但由于可以在AJAX响应(使用xhr.getResponseHeader)中访问响应头,因此您可以使用登录部件ExternalInterface并将其外包给AJAX.抓取AJAX响应中的标头并使用javascript设置cookie(根据此SO线程,浏览器将自动执行此操作).设置后,从闪存发送的后续请求将包含会话cookie.

使用该ExternalInterface.addCallback方法注册一个可以从javascript调用的flash方法.