java - 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
伊谢尔伦
伊谢尔伦 2017-05-27 17:41:37
0
8
1890

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?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

Antworte allen(8)
Ty80

可以把数据放在请求的header里 不过需要对方服务器需要设置允许请求头自定义字段

巴扎黑
  1. 服务器端A向B发送参数,等B应答

  2. B得到参数保存起来,给A应答一个token。A携带这个token重定向到B

  3. B接收到A的重定向,根据token获取第1步保存好的参数

Ty80

制造一个<form method="POST">,把参数填以<input type="hidden" ...>的形式填到<form>里,再用JavaScript触发submit(),这些参数就在地址栏里不可见地带到目标站点了。

仅有的幸福

谢谢邀请,如果两个服务都是你自己控制的,加密参数内容就可以了,可以参考 http session 是如何加密解密的,有相关安全标准的。

曾经蜡笔没有小新

题主要不试试从前端的角度去解决这个问题?就是通过前端发送一个ajax请求,然后使用jsonp去解决跨域传参数的问题

漂亮男人

或者是做一个中间层服务,这样用户请求中间层服务是看不到具体的参数,也控制了跨域问题

仅有的幸福

把数据和服务器B的地址写给浏览器的ajax,ajax拿到地址后带着数据post到B服务器.

phpcn_u1582

1.如果这两个服务器都是你可控的可以通过cookie跨域的方式带过去,注意只有通过cookie跨域302重定向才能带着cookie请求头去访问B服务器,别的自定义请求头浏览器是不会带过去的。
2.http协议并没有规定302响应时不能带响应体,可能是浏览器自动忽略了?
3.你可以用307来做,这样你的post请求就会post到新的uri上去。具体看看rfc2616-307

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage