2014-10-06 7 views
5

Ich versuche eine geringfügige Änderung des Google+ Websign-In-Server-Seitenablaufs wie unter Google Developer's website beschrieben.Kann ich https für lokale Entwicklung verwenden?

Googles gapi Code geben diese Fehlermeldung:

Uncaught SecurityError: Blocked a frame with origin " http://my-development-system.dev " from accessing a frame with origin " https://accounts.google.com ". The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.

Bin ich zu Recht sagen, dass meine lokalen Entwicklungssystem kann nicht eingerichtet werden, das https-Protokoll zu benutzen? Dieses

+2

Der Fehler besagt, dass Sie * nicht * HTTPS verwenden. Meinst du, dass du nicht für ein vertrauenswürdiges Zertifikat bezahlen willst? Haben Sie Probleme mit selbstsignierten Zertifikaten gefunden? –

+0

Ich benutze es mit Apache, muss aber meine eigenen Zertifikate generieren – Quince

+2

Aber das Lesen des Fehlers sagt mir, dass Sie nicht https überhaupt verwenden. Generieren Sie Ihre Zertifikate, konfigurieren Sie Apache für die Verwendung von SSL und versuchen Sie es erneut. –

Antwort

0

ich war falsch zu sagen, dass

my local development system cannot be set up to use the https protocol

Es kann! Einfach mit SSL-Zertifizierung.

1

ist nicht nur mit einem unterschiedlichen Protokoll zu tun (HTTP auf Ihrer Website vs HTTPS auf accounts.google.com), sondern auch, weil die Domain nicht überein (und Port für diese Angelegenheit), eine Beschränkung durch die Same Origin Policy auferlegt.

Diese Richtlinie stoppt www.evil.com von einem Laden einer Website wie www.bank.com in einem Frameset (oder Popup-Fenster, wenn Framing deaktiviert ist) und dann Zugriff auf das DOM. Wenn auf das DOM zugegriffen werden könnte, wäre dies ein großes Sicherheitsrisiko, da jede Website Ihre privaten Daten auf einer anderen Website lesen könnte.

Es ist möglich, den Zugriff durch Implementierung einer CORS Richtlinie zu ermöglichen und serverseitige Header auszugeben, damit andere angegebene Domains Inhalte lesen können. In Ihrem Fall wäre dies jedoch auf der Seite von Google. Wenn also https://accounts.google.com eine CORS Richtlinie implementiert, können Sie keine clientseitige Variation des serverseitigen Datenflusses vornehmen. Eine weitere Barriere ist, dass selbst wenn CORS implementiert wurde, kein Zugriff auf das DOM möglich ist. Sie können jedoch Inhalte über AJAX-Aufrufe von einer anderen Domäne, einem anderen Protokoll oder einem anderen Port abrufen. Die Zielwebsite müsste auch den Header Access-Control-Allow-Credentials: true ausgeben, damit Authentifizierungsdaten (d. H. Cookies in diesem Fall) mit der Anforderung gesendet und die Antwort von Ihrer Domäne gelesen werden kann.

Can I use https for local development?

Um Ihre ursprüngliche Frage zu beantworten, ist die Antwort ja. Dies kann für die meisten Zwecke ein selbstsigniertes Zertifikat sein und wirkt sich nicht auf diese spezielle Fehlermeldung in Ihrem Browser aus (da Sie als Browserbenutzer das Zertifikat akzeptieren und ihm vertrauen).