Отказался отображать в кадре, потому что он установил "X-Frame-Options" в "SAMEORIGIN"
Я разрабатываю веб-сайт, который должен быть отзывчивым, чтобы люди могли получить доступ к нему со своих телефонов. На сайте есть некоторые защищенные части, которые можно войти в систему с помощью Google, Facebook,...и т. д. (протокол OAuth).
серверная часть разрабатывается с использованием ASP.Net веб-API 2 и передний конец в основном AngularJS с некоторой бритвой.
для части аутентификации все работает нормально во всех браузерах, включая Android, но аутентификация Google не является работа на iPhone, и это дает мне это сообщение об ошибке
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'.
теперь, насколько мне известно, я не использую iframe в своих HTML-файлах.
я погуглил, но ни один ответ не заставил меня исправить проблему.
11 ответов:
Я нашел лучшее решение, это может помочь кому-то заменить
"watch?v="
by"v/"
и это будет работатьvar url = url.replace("watch?v=", "v/");
ОК, потратив больше времени на это с помощью этого so post
преодоление "отображение запрещено X-Frame-Options"
мне удалось решить эту проблему, добавив
&output=embed
до конца url-адреса перед отправкой на URL-адрес google:var url = data.url + "&output=embed"; window.location.replace(url);
в этом случае они установили заголовок SAMEORIGIN, что означает, что они запретили загрузку ресурса в iframe за пределами своего домена. Так что этот iframe не может отображать кросс-домен
для этого вам нужно соответствовать местоположению в вашем apache или любой другой службе, которую вы используете
Если вы используете Apache, то в httpd.файл conf.
<LocationMatch "/your_relative_path"> ProxyPass absolute_path_of_your_application/your_relative_path ProxyPassReverse absolute_path_of_your_application/your_relative_path </LocationMatch>
попробуйте использовать
вы можете найти весь встроенный код в разделе "встроенный код", и это выглядит так
<iframe width="560" height="315" src="https://www.youtube.com/embed/YOUR_VIDEO_CODE" frameborder="0" allowfullscreen></iframe>
для вставки видео youtube на вашу страницу angularjs вы можете просто использовать следующий фильтр для вашего видео
app.filter('scrurl', function($sce) { return function(text) { text = text.replace("watch?v=", "embed/"); return $sce.trustAsResourceUrl(text); }; });
<iframe class="ytplayer" type="text/html" width="100%" height="360" src="{{youtube_url | scrurl}}" frameborder="0"></iframe>
Я сделал следующие изменения и отлично работает для меня.
просто добавьте атрибут
<iframe src="URL" target="_parent" />
_parent
: это откроет встроенную страницу в том же окне.
_blank
: в другой вкладке
для меня исправление должно было войти console.developer.google.com и добавьте домен приложения в раздел" JavaScript Origins " учетных данных OAuth 2.
немного поздно, но эта ошибка также может быть вызвана, если вы используете
native application Client ID
вместоweb application Client ID
.
Спасибо за вопрос. Для YouTube iframe первая проблема-это URL, который вы дали, это встроенный URL или ссылка URL из адресной строки. эта ошибка для неинвазивного URL, но если вы хотите дать неинвазивный URL, то вам нужно кодировать в "безопасном канале", например(как для неинвазивного, так и для встроенного URL ):
import {Pipe, PipeTransform} from '@angular/core'; import {DomSanitizer} from '@angular/platform-browser'; @Pipe({name: 'safe'}) export class SafePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) { } transform(value: any, url: any): any { if (value && !url) { const regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/; let match = value.match(regExp); if (match && match[2].length == 11) { console.log(match[2]); let sepratedID = match[2]; let embedUrl = '//www.youtube.com/embed/' + sepratedID; return this.sanitizer.bypassSecurityTrustResourceUrl(embedUrl); } } } }
он будет расколот "ведиоид". Вы должны получить идентификатор видео, а затем установить URL как встроенный. В Html
<div> <iframe width="100%" height="300" [src]="video.url | safe"></iframe> </div>
угловая 2/5 спасибо снова.