Comment résoudre le problème des paramètres de redirection inter-domaines ? N'utilisez pas la méthode d'épissage des paramètres à la fin de l'URL de redirection
Exigence, le projet A est sur le serveur A et doit être redirigé vers le projet B sur le serveur B, et les paramètres doivent être transportés. Les paramètres ne sont pas visibles pour l'utilisateur, donc les paramètres ne peuvent pas être placés derrière l'URL de redirection. Avez-vous d'autres solutions ?
Le projet utilise le printemps
RedirectAttributes.addFlashAttribute n'est pas possible, il ne peut rediriger qu'entre les contrôles au sein du même projet.
Ce problème n'a pas été résolu, merci de me répondre.
Questions supplémentaires :
(1) Réponse en bas
Vous pouvez mettre les données dans l'en-tête de la requête, mais l'autre serveur doit configurer le champ personnalisé qui autorise l'en-tête de la requête
Comment comprendre cela ? Comment y parvenir ?
Le navigateur demande au serveur A (pas une requête ajax) et le serveur A renvoie une réponse 302 et une URL de redirection pour rediriger le client. À ce stade, le serveur A peut placer les paramètres qui doivent être transmis dans l'en-tête de réponse, et. Ensuite, le navigateur répond à la redirection de l'URL cible, mais les informations d'en-tête de réponse de redirection précédente ne seront pas transmises pour le moment
Comment pouvons-nous le laisser le porter là-bas ?
(2) Question 2 : Le serveur renvoie une réponse de redirection 302. Cette réponse peut-elle contenir un corps de message de réponse ? ? ?
Parce que ce que je teste utilise la réponse pour écrire des données, mais le navigateur ne peut pas voir les données de réponse de redirection. Comment cela est-il contrôlé dans l'implémentation ? Toutes les réponses de redirection ne contiennent-elles pas de corps de réponse ?
Vous pouvez mettre les données dans l'en-tête de la requête, mais l'autre serveur doit définir l'autorisation pour personnaliser le champ d'en-tête de la requête
Le serveur A envoie les paramètres à B et attend que B répond
B récupère les paramètres, les enregistre, et répond avec un jeton à A. A porte ce jeton et redirige vers B
B reçoit la redirection de A et obtient les paramètres enregistrés à l'étape 1 en fonction du jeton
Créez un
<form method="POST">
,把参数填以<input type="hidden" ...>
的形式填到<form>
里,再用JavaScript触发submit()
, et ces paramètres seront amenés au site cible de manière invisible dans la barre d'adresse.Merci pour l'invitation. Si vous contrôlez vous-même les deux services, il suffit de crypter le contenu des paramètres. Vous pouvez vous référer à la manière dont la session http est cryptée et déchiffrée et aux normes de sécurité pertinentes.
Pourquoi n’essayez-vous pas de résoudre ce problème du point de vue du front-end ? Envoyez simplement une requête ajax via le front-end, puis utilisez jsonp pour résoudre le problème de la transmission des paramètres inter-domaines
Ou créez un service de niveau intermédiaire, de sorte que lorsque les utilisateurs demandent le service de niveau intermédiaire, ils ne puissent pas voir les paramètres spécifiques, ce qui contrôle également les problèmes inter-domaines
Écrivez les données et l'adresse du serveur B dans l'ajax du navigateur. Une fois que l'ajax a obtenu l'adresse, il publiera les données sur le serveur B.
.1. Si vous pouvez contrôler ces deux serveurs, vous pouvez utiliser des cookies pour les transférer entre domaines. Notez que ce n'est que via la redirection 302 inter-domaines que vous pouvez accéder au serveur B avec des en-têtes de demande de cookie et d'autres en-têtes de demande personnalisés. pas le prendre.
2. Le protocole http ne stipule pas que le corps de la réponse ne peut pas être inclus dans la réponse 302. Peut-être que le navigateur l'ignore automatiquement ?
3. Vous pouvez utiliser 307, afin que votre demande de publication soit publiée sur le nouvel uri. Voir RFC2616-307 pour plus de détails