Bagaimana untuk memungkinkan http konten di dalam iframe pada situs https

Saya memuat beberapa HTML ke dalam iframe tapi ketika file yang dirujuk adalah menggunakan http, bukan https, saya mendapatkan error berikut:

[diblokir] halaman di {current_pagename} berlari konten yang tidak aman dari {referenced_filename}

Apakah ada cara untuk mengubah ini dari atau dengan cara apapun untuk mendapatkan sekitar itu?

Iframe tidak memiliki src atribut dan isi yang ditetapkan dengan menggunakan:

frame.open();
frame.write(html);
frame.close();
Mengomentari pertanyaan (4)

Catatan: Sementara solusi ini mungkin telah bekerja di beberapa browser ketika itu ditulis pada tahun 2014, tidak lagi bekerja. Navigasi atau mengarahkan ke URL HTTP dalam sebuah iframe tertanam di HTTPS halaman adalah tidak diizinkan oleh browser modern, bahkan jika frame dimulai dengan HTTPS URL.

Solusi terbaik yang saya buat adalah untuk hanya menggunakan google sebagai proxy ssl...

https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky

Diuji dan bekerja di firefox.

Metode Lain:

  • Menggunakan pihak Ketiga seperti cantumkan.ly (tapi itu benar-benar hanya baik untuk dikenal http Api).

  • Membuat anda sendiri redirect script di https halaman anda (kontrol sederhana javascript redirect pada relatif halaman terkait harus melakukan trik. Sesuatu seperti: (anda dapat menggunakan langauge/metode)

https://example.com Yang memiliki iframe menghubungkan ke...

https://example.com/utilities/redirect.html Yang sederhana js redirect script seperti...

dokumen.lokasi hotel ini.href ="http://thenonsslsite.com";

  • Atau, anda bisa menambahkan RSS feed atau menulis beberapa pembaca/parser untuk membaca http situs dan menampilkannya dalam situs https.

  • Anda bisa/harus juga merekomendasikan untuk http pemilik situs yang mereka buat koneksi ssl. Jika tidak ada alasan lain selain meningkatkan seo.

Kecuali anda bisa mendapatkan http pemilik situs untuk membuat sertifikat ssl yang paling aman dan permanen solusi yang akan membuat RSS feed grabing konten yang anda butuhkan (mungkin anda tidak benar-benar 'melakukan' apa pun pada situs http -yang mengatakan tidak log in ke sistem).

Masalah sebenarnya adalah bahwa memiliki http elemen di dalam sebuah situs https merupakan masalah keamanan. Tidak ada yang benar-benar halal cara sekitar ini risiko keamanan sehingga di atas hanya bekerja saat ini solusinya.

Catatan, bahwa anda dapat menonaktifkan ini mengukur keamanan di sebagian besar browser (diri sendiri, bukan untuk orang lain). Perhatikan juga yang ini 'hacks' mungkin menjadi usang dari waktu ke waktu.

Komentar (17)

Saya tahu ini adalah sebuah posting lama, tapi solusi lain yang akan menggunakan cURL, misalnya:

redirect.php:

<?php
if (isset($_GET['url'])) {
    $url = $_GET['url'];
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    echo $data;
}

kemudian pada tag iframe, seperti:

Ini hanya SEDIKIT contoh untuk mengilustrasikan ide-itu doesn't membersihkan URL, dan tidak akan mencegah orang lain menggunakan redirect.php untuk tujuan mereka sendiri. Pertimbangkan hal-hal ini dalam konteks dari situs anda sendiri.

Terbalik, meskipun, itu's lebih fleksibel. Misalnya, anda bisa menambahkan beberapa validasi curl'a $data untuk memastikan itu's benar-benar apa yang anda inginkan sebelum menampilkan itu-misalnya, tes untuk memastikan itu's tidak 404, dan memiliki alternatif konten anda sendiri siap jika itu adalah.

Plus-aku'm sedikit lelah mengandalkan Javascript mengarahkan untuk sesuatu yang penting.

Cheers!

Komentar (3)
Larutan

Berdasarkan keumuman dari pertanyaan ini, saya berpikir, bahwa anda'll perlu untuk setup anda sendiri HTTPS proxy pada beberapa server secara online. Lakukan langkah-langkah berikut:

  • Siapkan proxy server - install IIS, Apache
  • Dapatkan berlaku sertifikat SSL untuk menghindari kesalahan keamanan (bebas dari startssl.com untuk contoh)
  • Menulis sebuah wrapper, yang akan mengunduh konten yang tidak aman (cara di bawah ini)
  • Dari situs/aplikasi mendapatkan https://yourproxy.com/?page=http://insecurepage.com

Jika anda hanya men-download remote konten situs melalui file_get_contents atau serupa, anda masih dapat memiliki link tidak aman untuk kandungan. Anda'll harus menemukan mereka dengan regex dan juga mengganti. Gambar yang sulit untuk memecahkan, tetapi Ï menemukan solusi di sini: http://foundationphp.com/tutorials/image_proxy.php

Komentar (1)

menambahkan <meta http-equiv="Content-Keamanan-Kebijakan" content="meng-aman-permintaan"> di kepala

Komentar (5)

Anda akan selalu mendapatkan peringatan dari konten yang diblokir di sebagian besar browser ketika mencoba untuk menampilkan konten yang aman di https halaman. Ini lebih rumit jika anda ingin menanamkan hal-hal dari situs lain yang tidak't balik ssl. Anda dapat mematikan peringatan atau menghapus pemblokiran di browser anda sendiri tetapi untuk pengunjung lain itu's masalah.

Salah satu cara untuk melakukannya adalah untuk memuat konten sisi server dan menyimpan gambar dan hal-hal lain untuk server anda dan menampilkan mereka dari https.

Anda juga dapat mencoba menggunakan layanan seperti cantumkan.ly dan mendapatkan konten melalui mereka. Mereka memiliki dukungan untuk mendapatkan konten belakang https.

Komentar (1)

Menggunakan Google sebagai proxy SSL tidak bekerja saat ini,

Mengapa?

Jika anda membuka setiap page dari google, anda akan menemukan ada x-frame-opsi field dalam header.

X-Frame-Pilihan respon HTTP header dapat digunakan untuk menunjukkan apakah atau tidak sebuah browser harus diizinkan untuk membuat halaman di <frame>, <iframe> atau <objek>. Situs dapat menggunakan ini untuk menghindari pembajakan klik serangan, dengan memastikan bahwa konten tidak tertanam ke situs lain.

(Kutipan dari MDN)

Salah satu solusi

Di bawah ini saya bekerja di sekitar masalah ini:

Meng-Upload konten ke AWS S3, dan itu akan membuat https link untuk sumber daya. Pemberitahuan: mengatur izin untuk file html untuk memungkinkan semua orang melihat itu.

Setelah itu, kita bisa menggunakan itu sebagai src iframe di https situs web.

Komentar (0)

Anda bisa mencoba mengorek apa pun yang anda butuhkan dengan PHP atau server lain sisi bahasa, kemudian menempatkan iframe ke tergores konten. Berikut ini's contoh dengan PHP:

scrapedcontent.php:

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

index.html:

Komentar (3)

Gunakan anda sendiri HTTPS ke HTTP reverse proxy.

Jika anda menggunakan kasus tentang beberapa, jarang mengubah Url untuk menanamkan ke dalam iframe, anda hanya dapat mengatur sebuah reverse proxy ini pada server anda sendiri dan mengkonfigurasinya sehingga satu https URL pada server anda maps untuk satu http URL pada proxy server. Sejak reverse proxy adalah sepenuhnya serverside, browser tidak bisa menemukan bahwa itu adalah "hanya" berbicara dengan proxy dari situs web yang sebenarnya, dan dengan demikian tidak akan mengeluh karena koneksi ke proxy menggunakan SSL dengan benar.

Jika misalnya anda menggunakan Apache2 sebagai webserver anda, kemudian lihat petunjuk ini untuk membuat sebuah reverse proxy.

Komentar (2)