Comment passer des données dans l'en-tête HTTP lors de la redirection d'une requête en Java
est-il possible de transmettre des données d'en-Tête HTTP, tout en réorientant une demande à partir d'un serveur à un autre.
Voici mon scénario
J'ai un filtre générique, par l'intermédiaire de laquelle chaque demande est de passage.
Maintenant, basée sur une condition, je suis rediriger la demande de certains autre serveur à l'aide de l'API objHttpServletResponse.sendRedirect(strURL)
.
Mais, la question est, quand je suis à la définition de certains de données dans l'en-tête de réponse comme objHttpServletResponse.setHeader("Key", "Value");
Qui n'est pas disponible dans l'redirigé serveur.
Donc, mes questions sont,
1. Est-il possible de transmettre certaines données dans l'en-tête tout en réorientant une demande?
2. Si non, quelles sont les autres façons possibles pour envoyer des données tout en réorientant une demande?
Veuillez Noter: quelques autres moyens, comme
à l'aide de paramètres d'URL:
objHttpServletResponse.sendRedirect(strURL+"?param="+ strParamValue);
ou
à l'aide de session:
HttpSession session = httpRequest.getSession();
session.setAttribute("Key", "Value");
n'est pas ce que j'attends.
source d'informationauteur anij | 2014-06-12
Vous devez vous connecter pour publier un commentaire.
Les en-têtes que vous définissez sont écrits à la réponse qui lui sera envoyé au client, avec un en-tête location et un code d'état. Voir Rediriger une demande à l'aide de servlets et de la "setHeader" méthode ne fonctionne pas
Le client est alors censé envoyer une demande identique à l'URL spécifiée dans l'en-tête location. Identique à la demande qu'elle a envoyé à vous.
Vous souhaitez que le navigateur pour envoyer un en-tête que vous spécifiez avec la redirection de la demande. Avez-vous envisagé d'ajouter un (domaine) en-tête de Cookie? Quelques recherches sur google m'amène à croire que les cookies installés dans une réponse de redirection sera obtenir ramassé par la plupart des navigateurs. Voir http://blog.dubbelboer.com/2012/11/25/302-cookie.html
Jetez un oeil à Apache HttpClient.
Cet exemple ajoute plusieurs paramètres à la requête post :
Vous pouvez utiliser JS redirection, c'est à dire au lieu d'appeler
sendRedirect
retour page HTML avec javascript intégré qui permettra de faire de redirection réglage en-têtes dont vous avez besoin.Cependant, en utilisant les paramètres GET est vraiment la meilleure solution. Si vous avez des préoccupations au sujet des utilisateurs de modifier manuellement les paramètres de utiliser MAC code de protection de paramètres.Voir
Code d'authentification de Message
Dans la forme la plus simple,
?p1=1&p2=2&mac={mac value}, where {mac value} = md5('MY_SECRET_KEY' + 'p1=1&p2=2').
Côté réception peut recalculer MAC et de le comparer avec la condition que l'un. Puisque les utilisateurs externes ne peuvent pas connaître "MY_SECRET_KEY", ils ne seront pas en mesure de faire MAC valide.
Avez-vous vérifié la requête/réponse HTTP à partir de/vers le serveur? Vous pouvez utiliser un certain nombre de plugins sur chrome ou firefox pour vérifier. Vous serez en mesure de voir si la valeur est transmise à partir de votre serveur vers un autre serveur ou pas
Également récupérer l'en-tête à l'aide de httpResponse.getHeader("Clé"); ne pas utiliser de demande.getHeader("clé"). Un de mes collègue a été face à la même question quelques jours en arrière, il a été demande de l'aide pour aller chercher de valeurs d'en-tête