Flash 发布带有URLRequest的表单时,如何从浏览器会话中包含cookie?

Flash 发布带有URLRequest的表单时,如何从浏览器会话中包含cookie?,flash,cookies,urlrequest,Flash,Cookies,Urlrequest,(关于:) 当我发布URLRequest时,它是否自动包含来自承载Flash的浏览器会话的cookie?如果没有,我如何使其包含它们,或者在必要时检索它们并自己包含它们?如果cookie域(托管Flash控件的页面和您发布到的URL)匹配,那么是的,浏览器cookie默认随请求一起发送。作为一个快速示例(),我创建了一个简单的ColdFusion页面,该页面承载一个包含以下代码的SWF: <mx:Script> <![CDATA[ private fu

(关于:)


当我发布URLRequest时,它是否自动包含来自承载Flash的浏览器会话的cookie?如果没有,我如何使其包含它们,或者在必要时检索它们并自己包含它们?

如果cookie域(托管Flash控件的页面和您发布到的URL)匹配,那么是的,浏览器cookie默认随请求一起发送。作为一个快速示例(),我创建了一个简单的ColdFusion页面,该页面承载一个包含以下代码的SWF:

<mx:Script>
    <![CDATA[

        private function btn_click():void
        {
            var req:URLRequest = new URLRequest("http://test.enunciato.org/test.cfm");
            req.method = URLRequestMethod.POST;

            var postData:URLVariables = new URLVariables();
            postData.userName = "Joe";
            postData.userCoolness = "very-cool";

            req.data = postData;
            navigateToURL(req);
        }

    ]]>
</mx:Script>

<mx:Button click="btn_click()" label="Submit" />

。。。在该页面中,我设置了一个名为“USERID”的cookie,其值为“12345”。单击提交并导航到另一个CFM后,“我的服务器日志”显示请求中传递的cookie:

POST/test.cfm HTTP/1.1 Mozilla/5.0
ASPSESSIONIDAASRDSRT=INDFAPMDINJLOOAHDELDNKBL
JSESSIONID=60302395a68e3d3681c2
USERID=12345
test.enuciato.org 200

如果你自己测试,你也会在那里看到postData


有意义吗?

对flash不太确定。但是你不能序列化cookie并将其放入URL吗

您可能希望加密数据或以纯文本形式传输数据,但它可能看起来像:

网址:


(或者我遗漏了什么?

我假设您不想在服务器端包含会话id之类的内容以进行身份验证

从AS获取浏览器cookie(需要启用javascript,对大多数用户来说应该不是问题)

然后,在使用URLRequest对象时:

var urlRequest:URLRequest = new URLRequest(...blah blah, url here, etc etc);
urlRequest.requestHeaders.push(cookieHeader);

请注意,Firefox不会将会话的cookie与URLRequest一起发送,您需要类似于上述解决方案的解决方案来解决此问题。

谢谢。我还找到了一个HTTP代理(Charles--),并以这种方式确认了您的结果。它似乎对我不起作用,cookie没有发送到服务器。
public var cookieStr:String;
public var cookieHeader:URLRequestHeader;
ExternalInterface.call('eval','window.cookieStr = function () {return  document.cookie};')
cookieStr = ExternalInterface.call('cookieStr'); 
cookieHeader = new URLRequestHeader("Cookie",cookieStr);
var urlRequest:URLRequest = new URLRequest(...blah blah, url here, etc etc);
urlRequest.requestHeaders.push(cookieHeader);