Lors de la publication d'un formulaire avec URLRequest, comment inclure les cookies de la session du navigateur?

StackOverflow https://stackoverflow.com/questions/467449

  •  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?

Était-ce utile?

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?)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top