2014-10-06 15 views
5

Sto tentando una leggera variazione del flusso laterale del server di accesso Web Google+ come descritto nello Google Developer's website.Posso utilizzare https per lo sviluppo locale?

codice GAPI di Google sta dando questo messaggio di errore:

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.

ho ragione nel dire che il mio sistema di sviluppo locale non può essere impostato per utilizzare il protocollo HTTPS?

+2

L'errore indica che non si sta * utilizzando * HTTPS. Intendi dire che non vuoi pagare per un certificato di fiducia? Hai riscontrato problemi con i certificati autofirmati? –

+0

Lo uso con apache ma devo generare i miei certificati – Quince

+2

Ma leggere l'errore mi dice che non stai usando https. generare i tuoi certificati, configurare apache per usare ssl e riprovare. –

risposta

0

ero sbagliato nel dire che

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

Si può! Semplicemente usando l'autocertificazione SSL.

1

Questo non ha solo a che fare con un protocollo diverso (HTTP sul sito vs HTTPS su accounts.google.com), ma anche perché il dominio non corrisponde (e la porta è per questo), una restrizione imposta dallo Same Origin Policy.

Questa politica interrompe www.evil.com dal caricamento di un sito come www.bank.com all'interno di un set di frame (o finestra popup se il framing è disabilitato) e quindi accede al DOM. Se si riuscisse ad accedere al DOM, ciò rappresenterebbe un enorme rischio per la sicurezza poiché qualsiasi sito web potrebbe leggere i dati personali su un altro sito.

È possibile consentire l'accesso implementando una politica CORS e l'emissione di intestazioni lato server per consentire ad altri domini specificati di leggere il contenuto, tuttavia questo sarebbe da parte di Google nel tuo caso. Pertanto, a meno che lo https://accounts.google.com non implementa una politica CORS, non sarà possibile effettuare una variazione lato client del flusso lato server. Un'altra barriera è che anche se CORS è stato implementato, non consente l'accesso al DOM. Tuttavia, sarai in grado di recuperare contenuti da un altro dominio, protocollo o porta tramite chiamate AJAX. Il sito di destinazione dovrebbe anche produrre l'intestazione Access-Control-Allow-Credentials: true in modo che le credenziali di autenticazione (ovvero i cookie in questo caso) siano inviate con la richiesta e la risposta letta dal dominio.

Can I use https for local development?

Per rispondere alla domanda originale, la risposta è sì. Questo può essere un certificato autofirmato per la maggior parte degli scopi e non influenzerà questo particolare messaggio di errore nel tuo browser (come tu, come l'utente del browser ha scelto di accettare e considerare attendibile il certificato).