2010-11-13 103 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