Saya sedang menulis sebuah halaman web kecil yang tujuannya adalah untuk membingkai beberapa halaman lain, hanya untuk mengkonsolidasikannya ke dalam satu jendela browser untuk memudahkan penglihatan. Beberapa halaman yang saya coba buat bingkai dilarang dibingkai dan melemparkan "Menolak untuk menampilkan dokumen karena tampilan dilarang oleh X-Frame-Options." kesalahan di Chrome. Saya mengerti bahwa ini adalah batasan keamanan (untuk alasan yang baik), dan tidak memiliki akses untuk mengubahnya.
Apakah ada metode framing alternatif atau non-framing untuk menampilkan halaman dalam satu jendela yang tidak akan tersandung oleh header X-Frame-Options?
iframe
frames
x-frame-options
Garen Checkley
sumber
sumber
Jawaban:
Saya memiliki masalah serupa, di mana saya mencoba untuk menampilkan konten dari situs kami sendiri dalam iframe (sebagai dialog gaya lightbox dengan Colorbox ), dan di mana kami memiliki header "X-Frame-Options SAMAORIGIN" pada server di server sumber mencegahnya memuat di server pengujian kami.
Tampaknya ini tidak didokumentasikan di mana pun, tetapi jika Anda dapat mengedit halaman yang ingin Anda buka iframe (mis., Itu adalah halaman Anda sendiri), cukup kirim tajuk X-Frame-Options lain dengan string apa saja di semua string nonaktifkan perintah SAMAORIGIN atau DENY.
misalnya. untuk PHP, menempatkan
di bagian atas halaman Anda akan membuat browser menggabungkan keduanya, yang menghasilkan tajuk
... dan memungkinkan Anda memuat halaman dalam iframe. Ini tampaknya berfungsi ketika perintah SAMAORIGIN awal ditetapkan pada tingkat server, dan Anda ingin menimpanya pada kasus halaman-demi-halaman.
Semua yang terbaik!
sumber
X-Frame-Options: SAMEORIGIN
tidak ada cara untuk melakukan ini di dalam bingkai. Anda harus menggunakan sembulan.header_remove
fungsi baru , asalkan Anda memilikinya (> = 5.3.0).Header always unset X-Frame-Options
GOFORIT
(atau token acak sembarang acak lainnya) dengan sengaja melanggar tindakan pengamanan yang diterapkan oleh server; jika Anda memiliki kontrol server sendiri (yang harus Anda lakukan untuk layanan publik nyata) maka hal yang benar untuk dilakukan adalah hanya mengatur server untuk tidak mengatur header di tempat pertama.Jika Anda mendapatkan kesalahan ini untuk video YouTube, daripada menggunakan url lengkap gunakan url embed dari opsi bagikan. Akan terlihat seperti
http://www.youtube.com/embed/eCfDxZxTBW4
Anda juga dapat mengganti
watch?v=
denganembed/
begituhttp://www.youtube.com/watch?v=eCfDxZxTBW4
menjadihttp://www.youtube.com/embed/eCfDxZxTBW4
sumber
Jika Anda mendapatkan kesalahan ini saat mencoba menyematkan Google Map ke dalam
iframe
, Anda perlu menambahkan&output=embed
ke tautan sumber.sumber
&output=embed
UPDATE 2019: Anda dapat memotong
X-Frame-Options
dengan<iframe>
menggunakan JavaScript hanya sisi klien dan Komponen Web X-Frame-Bypass saya . Berikut ini demo: Berita Peretas dalam sebuahX-Frame-Bypass
. (Diuji di Chrome & Firefox.)sumber
Menambahkan a
ke tautan saya di tab facebook memperbaiki masalah untuk saya ...
sumber
Ada plugin untuk Chrome, yang menjatuhkan entri header itu (hanya untuk penggunaan pribadi):
https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/Review
sumber
Jika Anda mendapatkan kesalahan ini dengan mencoba menyematkan konten Vimeo, ubah src iframe,
dari: https://vimeo.com/63534746
ke: http://player.vimeo.com/video/63534746
sumber
Saya memiliki masalah yang sama ketika saya mencoba menanamkan moodle 2 di iframe, solusinya
Site administration ► Security ► HTTP security
dan periksaAllow frame embedding
sumber
Ini solusinya kawan !!
Satu-satunya hal yang berfungsi untuk aplikasi facebook!
sumber
Tampaknya X-Frame-Options Allow-From https: // ... disusutkan dan diganti (dan diabaikan) jika Anda menggunakan tajuk Kebijakan-Keamanan-Konten .
Berikut ini adalah referensi lengkapnya: https://content-security-policy.com/
sumber
Solusi untuk memuat situs web eksternal ke dalam iFrame walaupun sulit, opsi x-frame diatur untuk ditolak di situs web eksternal.
Jika Anda ingin memuat situs web lain ke dalam iFrame dan Anda mendapatkan
Display forbidden by X-Frame-Options”
kesalahan maka Anda sebenarnya dapat mengatasinya dengan membuat skrip proxy sisi server.Itu
src
atribut dari iFrame bisa memiliki url tampak seperti ini:/proxy.php?url=https://www.example.com/page&key=somekey
Maka proxy.php akan terlihat seperti:
Ini dengan melewati blok, karena itu hanya permintaan GET yang mungkin juga merupakan kunjungan halaman browser biasa.
Berhati-hatilah: Anda mungkin ingin meningkatkan keamanan dalam skrip ini. Karena peretas dapat mulai memuat di laman web melalui skrip proxy Anda.
sumber
Saya mencoba hampir semua saran. Namun, satu-satunya hal yang benar-benar menyelesaikan masalah adalah:
Buat
.htaccess
di dalam folder yang sama di mana file PHP Anda berada.Tambahkan baris ini ke htaccess:
Header always unset X-Frame-Options
Menyematkan PHP dengan iframe dari domain lain akan berfungsi setelahnya.
Selain itu Anda dapat menambahkan di awal file PHP Anda:
Namun, yang tidak perlu dalam kasus saya.
sumber
Saya memiliki masalah yang sama dengan mediawiki, ini karena server menolak menanamkan halaman ke iframe untuk alasan keamanan.
Saya menyelesaikannya menulis
ke dalam file konfigurasi php mediawiki.
Semoga ini bisa membantu.
sumber
FWIW:
Kami memiliki situasi di mana kami harus membunuh kami
iFrame
ketika kode "breaker" ini muncul. Jadi, saya menggunakan PHPfunction get_headers($url);
untuk memeriksa URL jarak jauh sebelum menampilkannya diiFrame
. Untuk kinerja yang lebih baik, saya menyalin hasil ke file jadi saya tidak membuat koneksi HTTP setiap kali.sumber
Saya menggunakan Tomcat 8.0.30, tidak ada saran yang bekerja untuk saya. Saat kami ingin memperbarui
X-Frame-Options
dan mengaturnyaALLOW
, berikut adalah cara saya mengonfigurasi untuk mengizinkan iframe embed:sumber
Satu-satunya pertanyaan yang memiliki banyak jawaban. SELAMAT DATANG di panduan ini saya berharap saya punya ketika saya berjuang untuk ini untuk membuatnya bekerja pada 10:30 malam pada hari batas waktu ... FB melakukan beberapa hal aneh dengan aplikasi kanvas, dan baik, Anda telah diperingatkan. Jika Anda masih di sini dan Anda memiliki aplikasi Rails yang akan muncul di balik Facebook Canvas, maka Anda perlu:
Gemfile:
config / facebook.yml
config / application.rb
config / initializers / omniauth.rb
application_controller.rb
Anda memerlukan pengontrol untuk menelepon dari pengaturan kanvas Facebook, saya menggunakan
/canvas/
dan membuat rute menjadi utamaSiteController
untuk aplikasi ini:login.html.erb
Sumber
sumber
target = '_ parent'
Menggunakan ide Kevin Vella, saya mencoba menambahkan atribut itu untuk membentuk elemen yang dibuat oleh generator tombol PayPal. Berfungsi untuk saya sehingga Paypal tidak terbuka di jendela / tab browser baru.
sumber
Saya tidak yakin seberapa relevan itu, tetapi saya membangun solusi untuk ini. Di situs saya, saya ingin menampilkan tautan di jendela modal yang berisi iframe yang memuat URL.
Apa yang saya lakukan adalah, saya menautkan acara klik tautan ke fungsi javascript ini. Semua ini dilakukan adalah membuat permintaan ke file PHP yang memeriksa header URL untuk X-FRAME-Options sebelum memutuskan apakah akan memuat URL dalam jendela modal atau untuk mengarahkan ulang.
Inilah fungsinya:
Berikut kode file PHP yang memeriksanya:
Semoga ini membantu.
sumber
Saya menemukan masalah ini ketika menjalankan situs web wordpress. Saya mencoba segala macam hal untuk memperbaikinya dan tidak yakin bagaimana, pada akhirnya masalahnya adalah karena saya menggunakan penerusan DNS dengan masking, dan tautan ke situs eksternal tidak ditangani dengan baik. yaitu situs saya di-host di http: //123.456.789/index.html tetapi ditutup untuk dijalankan di http://somewebSite.com/index.html . Ketika saya memasukkan http: //123.456.789/index.html di browser mengklik tautan yang sama menghasilkan tidak ada masalah X-frame-asal di konsol JS, tetapi menjalankan http://somewebSite.com/index.htmlmelakukan. Untuk menutupi dengan benar Anda harus menambahkan server nama DNS host Anda ke layanan domain Anda, yaitu godaddy.com harus memiliki server nama misalnya, ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com, jika Anda menggunakan digitalocean.com sebagai layanan hosting Anda.
sumber
remove_action( 'admin_init', 'send_frame_options_header',10);
untuk mem-bypass masalah ini ...Mengejutkan bahwa tidak ada seorang pun di sini yang pernah menyebut
Apache
pengaturan server (*.conf
file) atau.htaccess
file itu sendiri sebagai penyebab kesalahan ini. Cari melalui file konfigurasi.htaccess
atau AndaApache
, pastikan Anda tidak memiliki set berikut ini untukDENY
:Header always set X-Frame-Options DENY
Mengubahnya menjadi
SAMEORIGIN
, membuat hal-hal berfungsi seperti yang diharapkan:Header always set X-Frame-Options SAMEORIGIN
sumber
Satu-satunya jawaban nyata, jika Anda tidak mengontrol tajuk pada sumber yang Anda inginkan di iframe Anda, adalah dengan mem-proxy-nya. Minta server bertindak sebagai klien, terima sumbernya, hapus header yang bermasalah, tambahkan CORS jika perlu, lalu ping server Anda sendiri.
Ada satu jawaban lain yang menjelaskan cara menulis proxy semacam itu. Itu tidak sulit, tetapi saya yakin seseorang harus melakukan ini sebelumnya. Sulit menemukannya, karena suatu alasan.
Saya akhirnya menemukan beberapa sumber:
https://github.com/Rob--W/cors-anywhere/#documentation
^ disukai. Jika Anda membutuhkan penggunaan yang langka, saya pikir Anda bisa menggunakan aplikasi heroku-nya. Kalau tidak, itu kode untuk menjalankannya sendiri di server Anda sendiri. Perhatikan dengan pasti apa batasannya.
whateverorigin.org
^ pilihan kedua, tetapi cukup tua. seharusnya pilihan yang lebih baru dengan python: https://github.com/Eiledon/alloworigin
lalu ada pilihan ketiga:
http://anyorigin.com/
Yang tampaknya memungkinkan penggunaan gratis sedikit, tetapi akan menempatkan Anda pada daftar rasa malu publik jika Anda tidak membayar dan menggunakan sejumlah yang tidak ditentukan, yang hanya dapat Anda hapus jika Anda membayar biaya ...
sumber
Tidak disebutkan tetapi dapat membantu dalam beberapa kasus:
sumber
Gunakan baris yang diberikan di bawah ini sebagai ganti
header()
fungsi.sumber
Saya punya masalah ini, dan mengatasinya dengan mengedit httd.conf
Saya mengubah SAMAORIGIN menjadi GOFORIT dan memulai kembali server
sumber
Cobalah hal ini, saya rasa tidak ada orang yang menyarankan hal ini dalam Topik, ini akan menyelesaikan seperti 70% dari masalah Anda, untuk beberapa halaman lain, Anda harus memo, saya punya solusi lengkap tetapi tidak untuk umum,
Tambahkan di bawah ini ke iframe Anda
sandbox = "allow-same-origin allow-scripts allow-popups allow-form"
sumber
Edit .htaccess jika Anda ingin menghapus X-Frame-Options dari seluruh direktori.
Dan tambahkan baris: Header selalu membatalkan X-Frame-Options
[isi dari: Mengatasi "Tampilan yang dilarang oleh X-Frame-Options"
sumber