9
votes

Comment les clients peuvent utiliser mon service Web contourner le cache de proxy transparent de leur ISP pour que leurs demandes atteignent mon serveur?

J'ai écrit un service Web reposant qui n'est consommé que par des périphériques, jamais des navigateurs. Les appareils accèdent à Internet via le routeur de ménage existant du propriétaire et communiquent avec le service Web en envoyant des demandes HTTP via le routeur aussi souvent que toutes les 30 secondes. Ces demandes sont principalement des demandes "interrogations" de voir si le service Web dispose de nouvelles informations pour le périphérique.

Je souhaite empêcher les proxies transparents du FAI d'intercepter la demande et de renvoyer une réponse mise en cache. J'ai lu qu'une seule façon de le faire est d'ajouter une chaîne de requête aléatoire à la fin de l'URL de la demande pour tromper le proxy en pensant que c'est une demande unique. Par exemple: xxx

J'ai la capacité de le faire, mais est-ce le meilleur moyen? Un peu semble être un hack.


0 commentaires

3 Réponses :


1
votes

Vous pouvez essayer d'utiliser une connexion cryptée. Je pense que les proxy de cache ne sont pas censés stocker des réponses de la communication cryptée.

Une solution peut être de configurer HTTPS sur votre serveur, une autre pourrait être de configurer le client à utiliser un des proxies SSL. pour envoyer des demandes à votre serveur HTTP.


1 commentaires

HTTPS n'est pas une option pour mon scénario. Il doit être simple HTTP pour permettre des milliers de demandes par minute. Le processus de la poignée de main requis pour HTTPS créerait trop de frais généraux que je pense.



1
votes

Avec le contrôle de cache approprié et d'autres en-têtes bien sûr, utilisez POST et VOILA! Cela pourrait résoudre le problème que vous avez indiqué.

Vous voudrez peut-être voir cela - Discussion sur la mise en cache

Ensuite, le passage de paramètres supplémentaire pourrait également être évité.


0 commentaires

15
votes

Vous devez utiliser en-tête de contrôle du cache de HTTP pour y parvenir.

dans le réponse que vous devez envoyer: xxx

  • privé - indique que tout ou partie du message de réponse est destiné à un seul utilisateur et ne doit pas être mis en cache par un cache partagé.
  • max-Âge = 0 - indique que le client est prêt à accepter une réponse dont l'âge n'est pas supérieur à 0 seconde. C'est à dire. Les réponses sont immédiatement rassisées.
  • MUST-REVALIDATEZ - Lorsqu'il est présent dans une réponse reçue par un cache, que le cache ne doit pas utiliser l'entrée après son évolution de réagir à une demande ultérieure sans la revalidation d'abord avec le serveur d'origine.

    Vous devez également envoyer un Pragma Header pour les serveurs intermédiaires HTTP / 1.0: xxx

    lecture associée:


1 commentaires

Donc, vous ne pensez pas que je dois inclure no-cache et no-store dans la valeur du cache-cache-contrôle en-tête?