Dodałem przycisk logowania G + na mojej stronie, ale wciąż widzę ten problem. W większości przypadków jest to pierwszy raz i jeśli spróbujesz połączyć się po odświeżeniu strony, działa.
Oto błąd:
Uncaught SecurityError: Zablokowano ramkę z origin .com „przed dostępem do ramki z origin”https://accounts.google.comRamka żądająca dostępu ma protokół „http”, ramka, do której uzyskiwany jest dostęp, ma protokół „https”. Protokoły muszą być zgodne.
Widziałem ten post Zablokowana ramka przycisku logowania Google + ale rozwiązanie nie jest dla mnie istotne.
Odpowiedzi:
0 dla odpowiedzi № 1Po pierwsze, chcę podkreślić, że naprawdę powinieneś używać https podczas obsługi poświadczeń użytkownika. Jeśli możesz, uzyskaj certyfikat SSL i udostępniaj swoje treści przez https. Korzystając z HTTPS, możesz temu zapobiec MiTM ataki i wycieki informacji o użytkowniku.
Poza tym istnieje wiele potencjalnych źródeł wyzwalających ostrzeżenie:
Jeśli używasz przycisku Zaloguj się na stronieobsługujący HTTP zamiast bezpieczniejszego HTTPS, czasami komunikacja z serwerami logowania jest blokowana. Jeśli logowanie czasami działa, a czasem nie, może to być przyczyną.
Jeśli autoryzowany protokół źródłowy JavaScript (http / https) nie pasuje, serwer autoryzacji Google odrzuci twojego klienta (
http://yoursite.com
kiedy miałeś na myślihttps://yoursite.com
)Jeśli autoryzowane źródło JavaScript nie pasuje (np. Wpisujesz
.com
w autoryzowanym miejscu pochodzenia, kiedy miałeś na myśliyoursite.com
), serwer OAuth odrzuci twoją ramkę.
Podanie informacji o autoryzowanym pochodzeniu (zaciemnionym ze względów bezpieczeństwa) w Konsoli programisty Google i witrynie może pomóc w ustaleniu, co się dzieje w twoim przypadku.
Kilka rzeczy, które możesz zmienić, aby zobaczyć, czy to pomaga:
- Próbować zmiana polityki plików cookie albo
"single_host_origin"
lub"http://yoursite.com"
. - Spróbuj wyczyścić autoryzowane źródła w konsola programisty zawierać tylko domenę http: //.
- Spróbuj uzyskać dostęp do witryny z karty incognito, jeśli to zadziała, pliki cookie przeglądarki mogą być w złym stanie dla witryny.
- Spróbuj użyć Diagnostyka sieci Chrome aby sprawdzić, czy określone żądania kończą się niepowodzeniem.
- Spróbuj zastąpić dowolne załączniki, które używają jawnego protokołu, włączając odwołanie do protokołu względnego (np. Zamień
<script src="https://foo.bar/include.js" />
z<script src="//foo.bar/include.js" />
)