Tworzę stronę internetową, która ma reagować, aby ludzie mieli do niej dostęp z poziomu swoich telefonów. Witryna ma zabezpieczone części, do których można się zalogować za pomocą Google, Facebook, ... itd. (OAuth).
Backend serwera jest rozwijany przy użyciu ASP.Net Web API 2, a frontend to głównie AngularJS z niektórymi Razorami.
W przypadku części uwierzytelniającej wszystko działa poprawnie we wszystkich przeglądarkach, w tym na Androidzie, ale uwierzytelnianie Google nie działa na iPhonie i wyświetla mi ten komunikat o błędzie
Refused to display 'https://accounts.google.com/o/openid2/auth
?openid.ns=http://specs.openid.ne…tp://axschema.org/namePerson
/last&openid.ax.required=email,name,first,last'
in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
Jeśli o mnie chodzi, nie używam ramek iframe w swoich plikach HTML.
Przeszukiwałem Google, ale żadna odpowiedź nie dała mi rozwiązania problemu.
angularjs
asp.net-web-api
google-oauth
Ali Hmer
źródło
źródło
Odpowiedzi:
Znalazłem lepsze rozwiązanie, może to pomoże ktoś zastąpić
"watch?v="
przez"v/"
i będzie działaćźródło
<iframe width='1080' height='760' src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>
OK po spędzeniu na tym więcej czasu przy pomocy tego postu SO
Przezwyciężanie „Wyświetlanie zabronione przez X-Frame-Opcje”
Udało mi się rozwiązać problem, dodając
&output=embed
na końcu adresu URL przed opublikowaniem na URL Google:źródło
Spróbuj użyć
Cały osadzony kod można znaleźć w sekcji „Kod osadzony” i wygląda to tak
źródło
W tym przypadku ustawili nagłówek na SAMEORIGIN, co oznacza, że zabronili ładowania zasobu w ramce iframe poza swoją domeną. Dlatego ten element iframe nie może wyświetlać się w wielu domenach
W tym celu musisz dopasować lokalizację w apache lub innej usłudze, z której korzystasz
Jeśli używasz apache, to w pliku httpd.conf.
źródło
your_relative_path
?Jeśli używasz iframe dla vimeo, zmień adres URL z:
do:
Mi to pasuje.
źródło
Aby osadzić wideo z YouTube na stronie angularjs, możesz po prostu użyć następującego filtru do swojego filmu
źródło
Wprowadziłem poniższe zmiany i działa dobrze dla mnie.
Po prostu dodaj atrybut
<iframe src="URL" target="_parent" />
_parent
: otworzy to osadzoną stronę w tym samym oknie._blank
: W innej zakładceźródło
Dla mnie poprawka polegała na wejściu na console.developer.google.com i dodaniu domeny aplikacji do sekcji „Początki Javascript” poświadczeń OAuth 2.
źródło
Trochę późno, ale ten błąd może być również spowodowany, jeśli użyjesz
native application Client ID
zamiastweb application Client ID
.źródło
Miałem ten sam problem z implementacją w Angular 9. Oto dwa kroki, które zrobiłem:
Zmień adres URL YouTube z
https://youtube.com/your_code
nahttps://youtube.com/embed/your_code
.A następnie przekaż adres URL
DomSanitizer
Angulara.źródło
Jest dla mnie rozwiązanie, które odnosi się do rodzica. Po uzyskaniu adresu URL przekierowującego na stronę uwierzytelniania Google możesz wypróbować następujący kod:
źródło
Dzięki za pytanie. W przypadku iframe YouTube pierwszym problemem jest podany adres URL, czyli osadzony adres URL lub link URL z paska adresu. ten błąd w przypadku niezamieszczonego adresu URL, ale jeśli chcesz podać niezamieszczony adres URL, musisz zakodować w „bezpiecznej potoku”, np. (zarówno dla niezamieszczonego, jak i osadzonego adresu URL):
rozdzieli „vedioId”. Musisz uzyskać identyfikator wideo, a następnie ustawić adres URL jako osadzony. W formacie HTML
Angular 2/5 dzięki jeszcze raz.
źródło
dodaj poniżej z sufiksem URL
źródło
Miałem podobny problem z osadzaniem czatu na youtube i ja to rozgryzłem. Być może istnieje podobne rozwiązanie dla podobnego problemu.
Moja strona działa z www i bez niego. Aby więc działało, musisz upewnić się, że załadowałeś ten, który jest wymieniony na wartości embed_domain = ... Może brakuje Ci zmiennej, która powie, gdzie osadzić iframe. Aby rozwiązać mój problem, musiałem napisać skrypt wykrywający właściwą stronę internetową i wykonać prawidłową nazwę domeny osadzonej w ramce iframe.
lub
Zrozum, że nie używasz ramek iframe, ale nadal może istnieć jakaś zmienna, którą musisz dodać do swojej składni, aby powiedzieć jej, gdzie skrypt będzie używany.
źródło
Wystąpił podobny problem podczas korzystania z iframe do wylogowania podstron z różnymi domenami. Rozwiązaniem, które zastosowałem było załadowanie ramki iframe, a następnie zaktualizowanie źródła po załadowaniu ramki.
źródło
youtube / embed, dwa smaki:
https://www.youtube.com/embed/watch?v=eAxV4uO8oTU&list=RDeAxV4uO8oTU&start_radio=1 https://www.youtube.com/embed/CNG7yrHHJ5A
wklej w przeglądarce i zobacz
oryginalny:
https://www.youtube.com/watch?v=eAxV4uO8oTU&list=RDeAxV4uO8oTU&start_radio=1 https://www.youtube.com/watch?v=CNG7yrHHJ5A
jeden musi zachować „watch? V =”, a drugi nie
źródło