Piszę małą stronę internetową, której celem jest oprawienie kilku innych stron, po prostu konsolidacja ich w jednym oknie przeglądarki w celu ułatwienia przeglądania. Kilka stron, które próbuję wykadrować, zakazuje kadrowania i rzuca komunikat „Odmowa wyświetlenia dokumentu, ponieważ wyświetlanie jest zabronione przez Opcje X-Frame”. błąd w Chrome. Rozumiem, że jest to ograniczenie bezpieczeństwa (nie bez powodu) i nie mam dostępu, aby je zmienić.
Czy istnieje jakaś alternatywna metoda kadrowania lub nie-kadrowania, aby wyświetlić strony w jednym oknie, które nie zostaną uruchomione przez nagłówek Opcje X-Frame?
iframe
frames
x-frame-options
Garen Checkley
źródło
źródło
Odpowiedzi:
Miałem podobny problem, gdy próbowałem wyświetlić zawartość z naszej witryny w ramce iframe (jako okno dialogowe w stylu lightbox z Colorbox ) i gdzie na serwerze mieliśmy nagłówek „X-Frame-Options SAMEORIGIN” na serwer źródłowy uniemożliwiający załadowanie go na nasz serwer testowy.
Wydaje się, że nie jest to nigdzie udokumentowane, ale jeśli możesz edytować strony, które próbujesz iframe (np. To twoje własne strony), po prostu wysyłając kolejny nagłówek Opcje X-Frame z dowolnym łańcuchem, w ogóle wyłącza polecenia SAMEORIGIN lub DENY.
na przykład. dla PHP, wprowadzenie
u góry strony sprawi, że przeglądarki połączą oba te elementy, co spowoduje powstanie nagłówka
... i pozwala załadować stronę w ramce iframe. Wydaje się, że działa to, gdy początkowa komenda SAMEORIGIN została ustawiona na poziomie serwera, a chcesz zastąpić ją w przypadku strona po stronie.
Wszystkiego najlepszego!
źródło
X-Frame-Options: SAMEORIGIN
nie można tego zrobić w ramce. Musisz użyć wyskakującego okienka.header_remove
funkcji, pod warunkiem, że jest ona dostępna (> = 5.3.0).Header always unset X-Frame-Options
GOFORIT
(lub inny losowy dowolny nieważny token) celowo łamie środek bezpieczeństwa zastosowany przez serwer; jeśli sam kontrolujesz serwer (co powinieneś zrobić dla każdej prawdziwej usługi publicznej), to poprawne ustawienie serwera to nie ustawianie nagłówka w pierwszej kolejności.Jeśli pojawia się ten błąd w przypadku filmu na YouTube, zamiast pełnego adresu URL, użyj adresu URL do umieszczenia na stronie w opcjach udostępniania. Będzie to wyglądać
http://www.youtube.com/embed/eCfDxZxTBW4
Możesz również zastąpić
watch?v=
przezembed/
tohttp://www.youtube.com/watch?v=eCfDxZxTBW4
staje sięhttp://www.youtube.com/embed/eCfDxZxTBW4
źródło
Jeśli pojawia się ten błąd podczas próby osadzenia mapy Google w pliku
iframe
, musisz dodać&output=embed
link źródłowy.źródło
&output=embed
UPDATE 2019: Ty może bypass
X-Frame-Options
w<iframe>
użyciu tylko po stronie klienta JavaScript i mój X-FRAME-Bypass Web Component. Oto demo: Wiadomości Hackera wX-Frame-Bypass
. (Testowane w Chrome i Firefox.)źródło
Dodawanie
do mojego linku w zakładce Facebook naprawiłem problem ...
źródło
Istnieje wtyczka do Chrome, która upuszcza ten wpis nagłówka (tylko do użytku osobistego):
https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/reviews
źródło
Jeśli ten błąd występuje podczas próby osadzenia treści Vimeo, zmień src iframe
z: https://vimeo.com/63534746
na: http://player.vimeo.com/video/63534746
źródło
Miałem ten sam problem, gdy próbowałem osadzić moodle 2 w ramce iframe, rozwiązaniem jest
Site administration ► Security ► HTTP security
i sprawdźAllow frame embedding
źródło
To jest rozwiązanie chłopaki !!
Jedyne, co działało w przypadku aplikacji na Facebooku!
źródło
Wygląda na to, że X-Frame-Options Allow-From https: // ... jest amortyzowany i został zastąpiony (i zostaje zignorowany), jeśli zamiast tego użyjesz nagłówka Content-Security-Policy .
Oto pełne odniesienie: https://content-security-policy.com/
źródło
Rozwiązanie do wczytywania zewnętrznej strony internetowej do iFrame, nawet jeśli opcja X-Frame jest ustawiona na odmowę na zewnętrznej stronie internetowej.
Jeśli chcesz załadować inną stronę internetową do ramki iFrame i pojawi się
Display forbidden by X-Frame-Options”
błąd, możesz faktycznie temu zaradzić, tworząc skrypt serwera proxy po stronie serwera.src
Atrybutem iFrame może mieć URL wygląda tak:/proxy.php?url=https://www.example.com/page&key=somekey
Wtedy proxy.php wyglądałby mniej więcej tak:
Pomija to blok, ponieważ jest to po prostu żądanie GET, które równie dobrze może być zwykłą wizytą w przeglądarce.
Pamiętaj: możesz chcieć poprawić bezpieczeństwo w tym skrypcie. Ponieważ hakerzy mogą rozpocząć ładowanie na stronach internetowych za pomocą skryptu proxy.
źródło
Próbowałem prawie wszystkich sugestii. Jednak jedyną rzeczą, która naprawdę rozwiązała problem, było:
Utwórz
.htaccess
w tym samym folderze, w którym znajduje się plik PHP.Dodaj tę linię do htaccess:
Header always unset X-Frame-Options
Osadzanie PHP przez iframe z innej domeny powinno potem działać.
Dodatkowo możesz dodać na początku swojego pliku PHP:
Co w moim przypadku nie było konieczne.
źródło
Miałem ten sam problem z mediawiki, ponieważ serwer odmówił osadzenia strony w ramce iframe ze względów bezpieczeństwa.
Rozwiązałem to pisząc
do pliku konfiguracyjnego php mediawiki.
Mam nadzieję, że to pomoże.
źródło
FWIW:
Mieliśmy sytuację, w której musieliśmy zabić naszą osobę,
iFrame
gdy pojawił się ten kod „breaker”. Tak więc użyłem PHP,function get_headers($url);
aby sprawdzić zdalny adres URL przed wyświetleniem go w plikuiFrame
. Aby uzyskać lepszą wydajność, buforowałem wyniki do pliku, więc nie nawiązywałem połączenia HTTP za każdym razem.źródło
Korzystałem z Tomcat 8.0.30, żadna z sugestii nie działała dla mnie. Gdy chcemy zaktualizować
X-Frame-Options
i ustawić goALLOW
, oto jak skonfigurowałem, aby umożliwić osadzanie ramek iframe:źródło
Jedyne pytanie, które ma wiele odpowiedzi. Przyjdź do przewodnika, który chciałbym mieć, kiedy starałem się o to, aby zadziałało o 10:30 w nocy w ostatecznym terminie ... FB robi dziwne rzeczy z aplikacjami na płótnie, i cóż, zostałeś ostrzeżony. Jeśli nadal tu jesteś i masz aplikację Rails, która pojawi się za kanwą Facebooka, będziesz potrzebować:
Gemfile:
config / facebook.yml
config / application.rb
config / initializers / omniauth.rb
application_controller.rb
Potrzebujesz kontrolera, aby zadzwonić z ustawień kanwy Facebooka, użyłem
/canvas/
i ustawiłem trasę jako głównąSiteController
dla tej aplikacji:login.html.erb
Źródła
źródło
target = „_ rodzic”
Korzystając z pomysłu Kevina Velli, próbowałem dodać ten atrybut do elementów tworzonych przez generator przycisków PayPal. Pracował dla mnie, aby Paypal nie otwierał się w nowym oknie / karcie przeglądarki.
źródło
Nie jestem pewien, czy ma to znaczenie, ale opracowałem obejście tego problemu. Na mojej stronie chciałem wyświetlić link w oknie modalnym zawierającym element iframe, który ładuje adres URL.
Połączyłem zdarzenie click łącza z tą funkcją javascript. Wszystko to polega na wysłaniu żądania do pliku PHP, który sprawdza nagłówki URL dla X-FRAME-Options przed podjęciem decyzji, czy załadować adres URL w oknie modalnym, czy przekierować.
Oto funkcja:
Oto kod pliku PHP, który go sprawdza:
Mam nadzieję że to pomoże.
źródło
Natknąłem się na ten problem podczas prowadzenia strony internetowej wordpress. Próbowałem różnych rzeczy, aby to naprawić i nie byłem pewien, jak to się stało, ostatecznie problem polegał na tym, że korzystałem z przekazywania DNS z maskowaniem, a linki do zewnętrznych stron nie były odpowiednio adresowane. tj. moja witryna była hostowana pod adresem http: //123.456.789/index.html, ale została zamaskowana do działania pod adresem http://somewebSite.com/index.html . Kiedy podałem http: //123.456.789/index.html w przeglądarce, kliknięcie tych samych łączy nie spowodowało problemów z początkiem ramki X w konsoli JS, ale uruchomiłem http://somewebSite.com/index.htmlzrobił. Aby poprawnie maskować, musisz dodać serwery nazw DNS swojego hosta do usługi domenowej, tj. Godaddy.com powinien mieć serwery nazw np. Ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com, jeśli byłeś używanie digitalocean.com jako usługi hostingowej.
źródło
remove_action( 'admin_init', 'send_frame_options_header',10);
ominięciu tego problemu ...Zaskakujące jest to, że nikt tutaj nie wspomniał
Apache
o ustawieniach serwera (*.conf
plikach) lub.htaccess
o samym pliku jako o przyczynie tego błędu. Przeszukuj pliki konfiguracyjne.htaccess
lubApache
pliki, upewniając się, że nie masz następujących ustawieńDENY
:Header always set X-Frame-Options DENY
Zmiana na
SAMEORIGIN
sprawia, że wszystko działa zgodnie z oczekiwaniami:Header always set X-Frame-Options SAMEORIGIN
źródło
Jedyną prawdziwą odpowiedzią, jeśli nie kontrolujesz nagłówków źródła, które chcesz w ramce iframe, jest jej proxy. Niech serwer będzie działał jak klient, otrzyma źródło, usunie problematyczne nagłówki, w razie potrzeby doda CORS, a następnie pinguje własny serwer.
Jest jeszcze jedna odpowiedź wyjaśniająca, jak napisać taki serwer proxy. Nie jest to trudne, ale byłem pewien, że ktoś musiał to zrobić wcześniej. Z jakiegoś powodu trudno było go znaleźć.
W końcu znalazłem kilka źródeł:
https://github.com/Rob--W/cors-anywhere/#documentation
^ preferowane. Jeśli potrzebujesz rzadkiego użycia, myślę, że możesz po prostu użyć jego aplikacji heroku. W przeciwnym razie jest to kod do samodzielnego uruchomienia na własnym serwerze. Pamiętaj, jakie są limity.
whatorigin.org
^ drugi wybór, ale dość stary. podobno nowszy wybór w pythonie: https://github.com/Eiledon/alloworigin
wtedy jest trzeci wybór:
http://anyorigin.com/
Co wydaje się pozwalać na trochę bezpłatne korzystanie, ale spowoduje umieszczenie cię na publicznej liście wstydu, jeśli nie zapłacisz i użyjesz nieokreślonej kwoty, z której możesz usunąć tylko, jeśli uiścisz opłatę ...
źródło
Nie wspomniano, ale może pomóc w niektórych przypadkach:
źródło
Użyj tej linii podanej poniżej zamiast
header()
funkcji.źródło
miałem ten problem i rozwiązałem go edytując httd.conf
zmieniłem SAMEORIGIN na GOFORIT i zrestartowałem serwer
źródło
Spróbuj tego, nie sądzę, żeby ktokolwiek sugerował to w temacie, rozwiąże to jak 70% twojego problemu, w przypadku niektórych innych stron musisz złomować, mam pełne rozwiązanie, ale nie jest to publiczne,
DODAJ poniżej do swojego elementu iframe
sandbox = "allow-same-origin-enable-scripts allow-popups allow-form"
źródło
Edytuj plik .htaccess, jeśli chcesz usunąć X-Frame-Options z całego katalogu.
I dodaj wiersz: Nagłówek zawsze wyłącza opcje X-Frame
[treść z: Pokonywanie „Wyświetlanie zabronione przez X-Frame-Opcje”
źródło