2010-08-07 28 views
0

Sur Windows CE, je suis actuellement dans une situation où nous implémentons un serveur web simpliste à partir de zéro. L'utilisation prédominante de ce serveur sera dans une connexion RNDIS USB one-to-one. Le serveur est hébergé par l'application managée exécutée sur l'appareil.Comment puis-je rediriger une requête HTTP POST immédiatement après le traitement des en-têtes?

Par conséquent, nous avons étroitement intégré la gestion des requêtes POST avec les pages Web livrées. Au lieu de traiter la requête complète et de stocker des données POST qui seraient trop volumineuses, la page en cours (telle qu'identifiée par la requête) est informée de toute multipart postée en recevant ses en-têtes et un flux de son contenu. Cette solution fonctionne et brille et tout le monde est heureux. Maintenant, voici la question: Une page dans l'interface Web de l'application permet de télécharger une mise à jour logicielle, qui peut avoir une taille de 11 Mo, disons, de 40 Mo. Nous avons plusieurs étapes de validation en place lors de la gestion de cette requête POST, comme un système d'autorisation basé sur un cookie de session. Nous savons si le client est autorisé à télécharger une mise à jour logicielle dès que tous les en-têtes sont traités, en raison dudit cookie de session. Est-il possible d'éviter d'avoir à lire (et à supprimer) tout le contenu POST, de sorte que les utilisateurs obtiennent immédiatement des commentaires? Notre première idée était de retourner juste une bonne réponse au message d'erreur après le traitement de l'entête, puis de fermer la connexion, mais le navigateur (correctement, semble-t-il) se plaignait amèrement d'une réinitialisation prématurée par le pair.

Répondre

0

Le navigateur va vouloir que la transmission complète se produise. Le moyen de le rendre plus réactif pour l'utilisateur est probablement d'utiliser un appel AJAX sur la page. Ainsi, au lieu de recevoir les données, la page doit faire un appel AJAX pour publier le téléchargement sur une autre page de façon asynchrone. Moi-même, je le ferais avec jQuery, mais vous pouvez mettre en place le script sans aucun cadre pour le faire assez facilement.

+0

C'est triste :-(Merci pour la clarification – Arne

0

Depuis que j'ai donné récemment le RFC pour un examen plus approfondi:

HTTP 1.1 a vu l'inclusion d'un en-tête de demande supplémentaire pour ce genre de scénario

Expect: 100-Continue 

Cela indique au serveur pour vérifier les en-têtes de demande et revenir avec soit "OK, vous pouvez maintenant commencer à m'envoyer le contenu réel" ou un "Désolé, tout ce que vous avez l'intention de me POST, je ne serai pas en mesure d'y faire face" - réponse (pour le plus précis techniques, voir the HTTP 1.1 RFC)

Cependant, cela ne résout pas mon scénario, car les agents utilisateurs habituels (Firefox 3.6, IE 8) n'utilisent pas cette fonctionnalité lors de POSTing multipart/form-data. Cependant, une application d'aide à la main peut vouloir utiliser cette fonctionnalité.