7
votes

Dupliquer en-tête de référent - Barfs http.sys

J'ai testé le navigateur PS3 (NetFront) avec des composants flash intégrés sur une page Web et il semble y avoir un bogue assez grave avec la manière dont les demandes de flash sont émises. Le navigateur ajoute un référent (référent) et est donc le lecteur flash qui aboutit à des en-têtes en double. Ceci est bien correct si les en-têtes de référent sont identiques, cependant ils ne le sont pas et, par conséquent, la demande est arrêtée par http.sys sur W2K8. C'est un problème majeur pour moi, car j'ai un composant flash qui doit appeler des services Web afin de fonctionner.

Y a-t-il une manière que nous pouvons filtrer ou permettre ces demandes, en supprimant éventuellement les en-têtes en double.

Certaines solutions que nous avons pensées, mais sont sous-optimales ou non possibles avec notre développement et nos environnements en direct sont les suivants:

  • Ajout d'un proxy devant les serveurs pour nettoyer la demande.
  • Fixation de la demande sur nos équilibreurs de charge. Cela peut travailler sur notre environnement vivant mais pas dans Dev. L'utilisation d'un équilibreur de charge pour effectuer cette opération est une mauvaise pratique, notre équipe d'opérations ne serait pas satisfaite :)
  • Envoyez toutes les données à Flash lors de l'initialisation via Flashvars. Éventuellement faire des mises à jour / rappel via JavaScript. Cela se sent désordonné et nécessiterait un code personnalisé significatif pour une plate-forme.
  • empêche le navigateur ou le flash d'envoyer des en-têtes de référent. Cela serait acceptable, mais il ne semble pas y avoir un moyen de permettre à cela en flash ni en netfront.

    Pour référence, la demande suivante reproduisez le problème (copier et collera dans un violoneur ou un autre outil, je suppose que vous exécutez IIS7, W2K8 comme nous le sommes). Vous devriez obtenir un 400 mauvaise demande réponse. xxx

    Merci beaucoup


0 commentaires

4 Réponses :


1
votes

Si je numérotez ces 1-4, je dirais que 2 est le meilleur sens pour votre environnement en direct, tandis que 3 pourrait être quelque chose que vous auriez besoin de faire si votre environnement de développement ne peut pas correspondre à votre environnement en direct. Les numéros 1 et 2 sont assez similaires car un équilibreur de charge est essentiellement un proxy inverse. Numéro 4, comme vous l'avez souligné, il semble impossible sans attendre que Sony met à jour le navigateur et le plugin qu'ils utilisent, ce qui semble improbable, car ils l'ont probablement agriculté et ont un mauvais contrôle sur elle en premier lieu (genre de comme le firmware Sur ma télé-marée coréenne est fabriquée à Palo Alto, et il leur a fallu 10 mois pour se conformer à la GPL pour ne pas pouvoir mieux communiquer suffisamment).


0 commentaires

1
votes

Apache a le module mod_headers. Cela résoudrait votre problème, mais si vous devez utiliser http.sys, j'essaierais de trouver quelque chose d'équivalent à mod_headers. Peut-être que quelqu'un a porté mod_headers à http.sys?

aussi j'évaluerais la réécriture de l'URL. Je sais que cela concerne les en-têtes et non les URL, mais peut-être le module de réécriture de l'URL de http.sys (s'il existe) connaît des en-têtes.

Je suppose que les mod_headers ou mod_rewrite équivalent pour http.sys peuvent gérer la demande avant les barf http.sys.

bonne chance!


0 commentaires

1
votes

sterdit à partir de Windows DDK "démontre le remplacement d'un modèle de chaîne pour une connexion de protocole de commande de transmission (TCP) à l'aide de la plate-forme de filtrage Windows (PAM)".

Un peu de piratage supplémentaire le transforme en FSM qui peut vider tout sauf la première chaîne de référent.


0 commentaires

1
votes

L'ajout de ceci au HTML arrêtera le référent d'être utilisé si ce n'est pas nécessaire.

<meta name="referrer" content="never">


1 commentaires

Merci pour la réponse, malheureusement, je ne peux pas le tester, et la question a longtemps depuis longtemps, mais j'aime la pensée! Malheureusement, cette balise a l'air d'avoir été développée après le navigateur NetFront que nous aurions travaillé, mais cette solution pourrait travailler pour quelqu'un d'autre avec un problème plus actuel.