Lors de la publication d'un formulaire avec URLRequest, comment inclure les cookies de la session du navigateur?
-
19-08-2019 - |
Question
(avec la référence à cette réponse :)
Lorsque je poste avec URLRequest, inclut-il automatiquement les cookies de la session du navigateur dans laquelle Flash est hébergé? Sinon, comment puis-je le faire inclure ou, au besoin, les récupérer et les inclure moi-même?
La solution
Si les domaines de cookie (de la page hébergeant le contrôle Flash et de l'URL sur laquelle vous publiez) correspondent, alors, oui, les cookies du navigateur sont envoyés avec la demande par défaut. À titre d’exemple rapide ( version de travail ici ), j'ai créé une simple page ColdFusion hébergeant un SWF contenant le code suivant:
<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" />
... et dans cette page, j'ai défini un cookie, appelé "USERID", avec une valeur de "12345". Après avoir cliqué sur Soumettre et navigué vers un autre CFM, les journaux de mon serveur révèlent le cookie transmis dans la requête:
POST /test.cfm HTTP / 1.1 Mozilla / 5.0
ASPSESSIONIDAASRDSRT = INDFAPMDINJLOOAHDELDNKBL;
JSESSIONID = 60302395a68e3d3681c2;
USERID = 12345
test.enunciato.org 200
Si vous le testez vous-même, vous verrez également le postDataData.
Avez-vous du sens?
Autres conseils
Je suppose que vous souhaitez simplement inclure un identifiant de session à des fins d'authentification côté serveur.
Obtenir le cookie du navigateur de AS (nécessite l'activation de Javascript, ne devrait pas poser de problème à la plupart des utilisateurs)
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);
Ensuite, lorsque vous utilisez votre objet URLRequest:
var urlRequest:URLRequest = new URLRequest(...blah blah, url here, etc etc);
urlRequest.requestHeaders.push(cookieHeader);
Notez que Firefox n'envoie pas les cookies de la session avec un URLRequest. Vous aurez besoin d'une solution similaire à celle ci-dessus pour résoudre ce problème.
Pas sûr du flash. Mais ne pouvez-vous pas sérialiser le cookie et le mettre dans l'URL?
Peut-être voudriez-vous chiffrer les données ou les transmettre en clair, mais cela pourrait ressembler à:
url:
www.example.com?newurl&cookiesession=true&cookieusername=bob
etc
(ou quelque chose me manque?)