2016-04-26 9 views
6

Meine Anwendung läuft unter HTTPS mit einem gültigen Zertifikat von einer der bekannten Behörden. Leider verwende ich eine Drittanbieter-API, die HTTPS nicht unterstützt.Der Aufruf eines unsicheren Endpunkts von einer Website läuft unter HTTPS - nginx

Das Ergebnis ist die bekannte Nachricht Gemischter Inhalt: mydomain.com hat einen unsicheren XMLHttpRequest-Endpunkt angefordert.

Ist es möglich, eine Ausnahme von dem Web-Server hinzufügen, um dieses API insecurely zu ermöglichen Aufruf !! Ich benutze Nginx BTW.

Wenn nicht was was andere Möglichkeiten sein kann, um dieses Problem zu lösen.

Ich habe eine Lösung, aber ich mag es nicht, weil es sich um eine Leistung Nachteil sein:

eine API-Implementierung, die als Proxy fungiert, erhalten die Anfragen von der Anwendung über HTTPS und die Anfragen machen Die API der dritten Partei wirft HTTP.

+0

Hat meine Antwort das Problem beheben? Wenn Sie Hilfe bei der Konfiguration benötigen, kann ich. – khrm

+0

@ kHz wird es versuchen morgen und aktualisieren Sie –

Antwort

3

ich dieses Problem auch habe. Alles auf einer Seite sollte kommen und https anfordern, wenn Sie https verwenden und keine Warnungen/Fehler wünschen. Sie müssen keinen API-Proxy implementieren, wenn Sie nginx verwenden. Was auch immer Sie implementieren, wird ein Leistungseinbruch sein, wie Sie richtig vermuten. Verwenden Sie einfach Proxy-Pass in Nginx. In unserer Konfiguration, die wir haben:

location /thirdparty/ { 
     proxy pass http://thirdpartyserver/; 
} 

Beachten Sie den Schrägstrich in Proxy-Pass, halte ich alle dritten api Partei, die in https://myserver/thirdparty/requesturl http sind. Trailing slash entfernt Drittanbieter während der Anfrage. So wird es, http://thirdpartyserver/request

Offizielle Referenz: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

0

Um gemischte Inhalte zu ermöglichen, müssen die einzelnen Benutzer dies in ihren Browsern zulassen. Das Zulassen von HTTP-Inhalten aus einer Quelle reicht aus, um die Sicherheit von HTTPS zu beeinträchtigen, sodass Browser standardmäßig gemischten Inhalt verbieten. Die Lösungen, die ich sehen sind:

  1. Erste von HTTPS loszuwerden (was ich würde empfehlen)
  2. tun, was Sie vorgeschlagen und Proxying Anfragen durch (das ist immer noch nicht eine große Sicherheit weise)
  3. Befreien die HTTP-Content-

Google hat einige Empfehlungen für Entwickler unter Schritt 1 (aber sie sind im Grunde oben Echo): https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content#step-1

+0

Danke für Ihre Antwort, ich würde nicht los HTTPS los. Durch diesen Artikel gegangen, aber ich habe nicht gefunden, wonach ich gesucht habe, als jemand eine andere Idee geben könnte. –

+0

Ja, dieser Artikel skizzierte im Grunde, was ich oben gesagt habe. Vom Standpunkt der Benutzerfreundlichkeit aus betrachtet, ist es aus Sicherheitsgründen von größter Bedeutung, dass Mixed-Content blockiert wird – winhowes