Heim > Fragen und Antworten > Hauptteil
Wie kann das Problem der domänenübergreifenden Umleitung mit Parametern gelöst werden? Verwenden Sie nicht die Methode zum Zusammenfügen von Parametern am Ende der Weiterleitungs-URL
Anforderung: Projekt A befindet sich auf Server A und muss an Projekt B auf Server B umgeleitet werden, und Parameter müssen übertragen werden. Die Parameter sind für den Benutzer nicht sichtbar, sodass die Parameter nicht hinter der Umleitungs-URL gespleißt werden können. Haben Sie andere Lösungen?
Das Projekt nutzt den Frühling
RedirectAttributes.addFlashAttribute ist nicht möglich, es kann nur zwischen Steuerelementen innerhalb desselben Projekts umgeleitet werden.
Dieses Problem wurde nicht gelöst, bitte geben Sie mir eine Antwort.
Ergänzende Fragen:
(1) Antwort unten
Sie können die Daten in den Header der Anfrage einfügen, aber der andere Server muss das benutzerdefinierte Feld einrichten, das den Anfrageheader zulässt
Wie ist das zu verstehen? Wie erreichen?
Der Browser fordert Server A an (keine Ajax-Anfrage), und Server A gibt eine 302-Antwort und eine Umleitungs-URL zurück, um den Client umzuleiten. Zu diesem Zeitpunkt kann Server A die zu übergebenden Parameter in den Antwortheader einfügen Dann antwortet der Browser auf die Ziel-URL-Umleitung, aber die vorherigen Header-Informationen der Umleitungsantwort werden zu diesem Zeitpunkt nicht übertragen
Wie können wir ihn dorthin tragen lassen?
(2) Frage 2: Der Server gibt eine 302-Umleitungsantwort zurück. Kann diese Antwort eine Antworttextnachricht enthalten? ? ?
Weil ich die Antwort zum Schreiben von Daten teste, der Browser die Umleitungsantwortdaten jedoch nicht sehen kann. Wie wird dies in der Implementierung gesteuert? Enthalten nicht alle Weiterleitungsantworten einen Antworttext?
巴扎黑2017-05-27 17:43:37
服务器端A向B发送参数,等B应答
B得到参数保存起来,给A应答一个token。A携带这个token重定向到B
B接收到A的重定向,根据token获取第1步保存好的参数
PHP中文网2017-05-27 17:43:37
制造一个<form method="POST">
,把参数填以<input type="hidden" ...>
的形式填到<form>
里,再用JavaScript触发submit()
,这些参数就在地址栏里不可见地带到目标站点了。
phpcn_u15822017-05-27 17:43:37
1.如果这两个服务器都是你可控的可以通过cookie跨域的方式带过去,注意只有通过cookie跨域302重定向才能带着cookie请求头去访问B服务器,别的自定义请求头浏览器是不会带过去的。
2.http协议并没有规定302响应时不能带响应体,可能是浏览器自动忽略了?
3.你可以用307来做,这样你的post请求就会post到新的uri上去。具体看看rfc2616-307