2010-11-13 55 views
0

我有一个小的多人Flash游戏中,你可以通过点击在他或她的化身显示玩家概况:ActionsScript的navigateToUrl()和HTTP饼干

const PROFILE_URL:String = 'http://myserver/user.php?id='; 
try { 
    navigateToURL(new URLRequest(PROFILE_URL+id), '_blank'); 
} catch(e:Error) { 
} 

这个效果很好,但现在我想扩展user.php,以便玩家可以添加关于对方的评论。对于授权,我想使用HTTP cookies,从game.swf传递给user.php。

(我不想在这里使用GET或POST,因为GET会在URL中拥有验证变量,玩家可能会偶尔发送该URL或将它发布在我的论坛中,POST会要求重新发布当您重新加载时的请求)。

我的问题是,我找不到通过navigateToURL()方法设置HTTP cookie的方式。请告诉我

问候, 亚历

回答

1

你可以先通过身份验证通过一个单独的呼叫记录中,例如login.php中和该脚本将启动一个会话。然后,对同一个域的所有其他呼叫都已启动会话,并且您可以检查身份验证。当PHP可以为你做时,无需担心cookie。

+0

好的,我已经完成了 – 2010-11-16 09:43:22

1

假设你已经在你的SWF Coo​​kie值,你应该能够随URLRequest一起使用URLRequestHeader如下:

var header:URLRequestHeader = new URLRequestHeader("Cookie", "<the cookie>"); 
var request:URLRequest = new URLRequest("http://example.com/script.php"); 
request.requestHeader.push(header); 
request.method = URLRequestMethod.POST; 
navigateToURL(request, "_blank"); 

在某些情况下,浏览器将cookie发送给服务器如果它已经被设置,即使你没有明确地将它包含在请求中。这取决于浏览器和Flash Player的版本。您可能还需要调整crossdomain.xml文件。

另请注意,传递未加密的Cookie令牌可能存在安全隐患。见Firesheep

+0

谢谢,但Adobe不允许使用URLRequestHeader设置“Cookie” – 2010-11-16 09:42:41

+0

@Alexander啊,是的,谢谢你的更正。其中一个禁止标题。您可能需要调查服务器已经设置的cookie是否与URLRequest一起传回。正如我所提到的,有时他们使用某些浏览器。 – martineno 2010-11-16 09:50:04