Kommunikation von der https-Website zum http-Server auf localhost, domänenübergreifend

9

Ich habe also eine GWT-Webapp, die mit einer Desktop-Anwendung kommunizieren muss. Um dies zu erreichen, startet das Desktop-Programm einen Webserver an einem bestimmten Port (zB http://localhost:9000 ).

Ich habe JSON-P-Kommunikation implementiert, um die Cross-Domain-Filter zu umgehen, was beim lokalen Testen gut funktioniert (webapp läuft bei http://localhost:8888 ). Das Problem ist, dass die Produktions-Website über https bedient wird, und kein Browser wird Ihnen erlauben, Javascript über http von https anzufordern.

Also habe ich ein paar Dinge ausprobiert.

Ich habe den Header "Access-Control-Origin: *" mit Javas HttpServletResponse.addHeader("Access-Control-Allow-Origin", "*") sowohl auf dem Server, der das GWT-Javascript bedient, als auch auf dem Server, an den das Javascript versucht, und HTTP-Anfragen zu machen, gesetzt Das wird von denselben Ursprungsfiltern blockiert (vermutlich, weil ich versuche, eine Anfrage von https an http zu stellen.)

Ich habe versucht, die Json-P-Kommunikation aus einem neuen Fenster (erstellt durch Aufruf von $ wnd.open) ohne eine URL in der Hoffnung, dass es über http laden würde, aber es wird über https geladen, so lief ich in die gleiche Problem wie zuvor.

Gibt es eine Möglichkeit, eine domainübergreifende Anfrage von Javascript über https auf http zu stellen? Es gibt keine Möglichkeit, https auf dem lokalen Host auszuführen (das selbstsignierte Zertifikat wird bei JSON-P-Anfragen blockiert).

    
Jake Weber 22.05.2013, 17:19
quelle

1 Antwort

1

Unter der Annahme, dass der Computer, auf dem Sie bereitstellen, Internetzugriff hat, ist die beste Lösung für dieses Problem die Registrierung einer Subdomain auf Ihrer Hauptwebsite, auf der die Webanwendung gehostet wird (z. B. localhost.example.com) und die DNS-Einträge einzurichten auf 127.0.0.1 zeigen. Sie können dann ein signiertes https-Zertifikat für localhost.example.com erhalten und dieses Zertifikat mit Ihrer Anwendung verteilen.

Worte der Warnung:

  • Da das Zertifikat mit Ihrer Anwendung verteilt wird, ist es nicht geheim. Stellen Sie daher sicher, dass Sie kein Zertifikat für * .example.com oder ähnliches bereitstellen. Glücklicherweise muss ein Angreifer einen Server auf dem lokalen Computer ausführen, um ihn auszunutzen. In diesem Fall haben sie bereits Zugriff auf alle Ihre Cookies und Ähnliches.
  • Wenn / wenn Ihr Zertifikat abläuft, können die Dinge brechen. Dies erfordert möglicherweise, dass Ihre Clientanwendung das Zertifikat von Ihrem Webserver herunterlädt. Die Sicherheitsimplikationen sollten nicht schlimmer sein als die Verteilung in der Binärdatei.
  • Wenn Sie sehr sicherheitsrelevant sind, könnte die Verwendung einer vollständig separaten Domäne (localhosteample.com) vor zukünftigen Exploits oder Bugs schützen.
HALtheWise 17.08.2017 16:19
quelle

Tags und Links