En-têtes personnalisés possibles avec URLRequest / URLStream à l'aide de la méthode GET?
-
03-07-2019 - |
Question
C'est très simple, vraiment:
var req:URLRequest=new URLRequest();
req.url="http://somesite.com";
var header:URLRequestHeader=new URLRequestHeader("my-bespoke-header","1");
req.requestHeaders.push(header);
req.method=URLRequestMethod.GET;
stream.load(req);
Pourtant, si j'inspecte le trafic avec WireShark, l'en-tête my-bespoke-header
n'est pas envoyé. Si je change en URLRequestMethod.POST
et que j'ajoute des données à req.data ??code>, l'en-tête est envoyé, mais l'application réceptrice requiert un élément GET, pas un POST.
La documentation mentionne une liste noire d’en-têtes qui ne seront pas envoyés. my-bespoke-header
n'en fait pas partie. Il est peut-être intéressant de mentionner que la demande d'origine provient d'un port différent du même domaine. Rien ne figure dans le journal policyfile, donc cela semble peu probable, mais est-ce une solution à laquelle on peut remédier en chargeant de force un crossdomain.xml avec un allow-http-request-header-from
, même si Ce n'est pas une question de domaines croisés? Ou s'agit-il simplement d'une fonctionnalité non documentée de Flash Player qui ne peut envoyer que des en-têtes personnalisés avec une demande POST?
La solution
D'après ce que je peux comprendre, il semble que votre supposition concernant le manque d'en-têtes personnalisés ne gère pas HTTP GET. Il s'agit en effet d'une fonctionnalité non documentée (ou d'un bogue?) dans les bibliothèques standard.
Dans tous les cas, vous voudrez peut-être savoir si as3httpclient correspond à vos besoins et laissez vous travaillez autour de ce problème. Voici un extrait pertinent d'un post sur le blog du développeur de cette bibliothèque:
"Je n'ai pas pu définir l'en-tête d'un message. Requête HTTP / GET. Macromedia Flash Le joueur vous permet de définir l'en-tête uniquement pour les demandes POST. J'ai discuté de ça problèmes avec Ted Patrick et il m'a dit comment je peux nous Socket pour atteindre le désiré et il était très gentil de donner un me code-snippet, qui m'a commencé. "
Autres conseils
Si cette limitation était non documentée à la fois, ce n'est plus le cas. Voir:
http://livedocs.adobe.com/ flex / 3 / langref / flash / net / URLRequest.html # requestHeaders
"[...] En raison des limitations du navigateur, les en-têtes de requêtes HTTP personnalisés ne sont pris en charge que pour les requêtes POST, et non pour les requêtes GET. [...]"