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.0ASPSESSIONIDAASRDSRT=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);