Îmi încarc HTML într-un iframe, dar atunci când un fișier de referință este folosind http, nu https, primesc următoarea eroare:
[blocat] pagina De la {current_pagename} fugit nesigure de conținut de la {referenced_filename}
Există vreo modalitate de a transforma acest off sau orice modalitate de a obține în jurul valorii de ea?
Iframe-ul nu are nici src
atribut și conținut sunt stabilite prin:
frame.open();
frame.write(html);
frame.close();
Notă: în Timp ce această soluție poate fi lucrat în unele browsere atunci când a fost scrisă în anul 2014, nu mai funcționează. Navigarea sau redirecționarea la un URL HTTP într-un
iframe
încorporat într-o pagină HTTPS nu este permisă de browserele moderne, chiar dacă cadrul a început cu un HTTPS URL-ul.
Cea mai bună soluție am creat este de a folosi pur și simplu google ca ssl proxy...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
Testat și funcționează în firefox.
Alte Metode:
Utilizați o Terță parte, cum ar fi încorpora.ly (dar este într-adevăr numai bun pentru bine cunoscut http Api-uri).
Creați-vă propriile redirect script într-o pagină https ai control (un simplu javascript redirect pe un raport legat de pagină ar trebui să facă truc. Ceva de genul: (puteți folosi orice langauge/metoda)
https://example.com
Care are un iframe conectarea la...
https://example.com/utilities/redirect.html
Care are un simplu js redirect script ca...
document.locație.href ="http://thenonsslsite.com";
Alternativ, puteți adăuga un flux RSS sau scrie un cititor/parser-ul pentru a citi site-ul http și afișați-l în site https.
Ai putea/ar trebui, de asemenea, recomanda http proprietarul site-ului care vor crea o conexiune ssl. Dacă nu pentru alt motiv decât a crește seo.
Dacă nu puteți obține http proprietarul site-ului pentru a crea un certificat ssl, cele mai sigure și permanente soluție ar fi de a crea un feed RSS grabing conținutul care aveți nevoie (probabil nu sunt de fapt 'fac' nimic pe site-ul http -care este de a spune că nu vă conectați la orice sistem).
Problema reală este că, având http elemente în interiorul unui https site-ul reprezintă o problemă de securitate. Nu sunt complet cușer modalități în jurul valorii de acest risc de securitate, astfel încât cele de mai sus sunt doar activitatea curentă ului.
Rețineți că puteți dezactiva această măsură de securitate în cele mai multe browsere (tine, nu pentru alții). De asemenea, rețineți că aceste 'hacks' pot deveni depășite în timp.
Stiu ca e un post vechi, dar o altă soluție ar fi de a folosi cURL, de exemplu:
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;
}
apoi, în iframe tag-ul, ceva de genul:
<iframe src="/redirect.php?url=http://www.example.com/"></iframe>
Acesta este doar un MINIM exemplu pentru a ilustra ideea ... nu't steriliza URL-ul, nici nu ar împiedica pe altcineva folosind redirect.php pentru propriile lor scopuri. Luați în considerare aceste lucruri în contextul de site-ul propriu.
Partea buna, totusi, este's mai flexibil. De exemplu, ați putea adăuga unele de validare a curl'd $date pentru a vă asigura că's cu adevărat ceea ce vrei înainte de afișarea acesta, de exemplu, de testare pentru a vă asigura că's nu o 404, și au conținut alternativ de propriile gata, dacă este.
Plus ... am'm un pic obosit de bazându-se pe Javascript redirecționări pentru ceva important.
Noroc!
Pe baza informațiilor de la această întrebare, cred eu, că te - 'll nevoie pentru a configura propriul dvs. HTTPS proxy pe un server on-line. Faceți următorii pași:
Dacă pur și simplu descărcați de la distanță conținutul site-ului prin intermediul file_get_contents sau similare, puteți avea în continuare link-uri nesigure de conținut. Te'll trebuie să le găsească cu regex și înlocui, de asemenea,. Imaginile sunt greu de rezolvat, dar Ï găsit soluție aici: http://foundationphp.com/tutorials/image_proxy.php
adauga <meta http-equiv="Conținut-Securitate-Politica" content="upgrade-nesigur-cereri">
in cap
compatibilitate browser-ul: http://caniuse.com/#feat=upgradeinsecurerequests
Veți obține întotdeauna avertismentele de conținut blocat în cele mai multe browsere atunci când încearcă pentru a afișa non asigura conținutul de pe o pagină https. Acest lucru este dificil, dacă doriți să încorporați lucruri de la alte site-uri care nu sunt't spatele ssl. Puteți să dezactivați avertizările sau elimina blocarea în propriul browser, dar pentru alte vizitatorilor-l's o problemă.
O modalitate de a face asta este de a încărca conținut pe partea de server și de a salva imagini și alte lucruri pentru a server-ul dvs. și a le afișa la https.
De asemenea, puteți încerca să utilizați un serviciu ca încorpora.ly și pentru a obține conținut prin intermediul lor. Ei au suport pentru obtinerea conținutul spatele https.
Folosind Google ca proxy SSL nu este de lucru în prezent,
Dacă ai deschide orice pagina de pe google, veți găsi acolo este o x-frame-options
câmp din antet.
X-Frame-Options HTTP antet de răspuns poate fi folosit pentru a indica dacă este sau nu un browser ar trebui să fie permis pentru a face o pagină într-o
<cadru>
,<iframe> " sau " <obiect>
. Site-uri pot folosi aceasta pentru a evita clickjacking atacuri, prin asigurarea conținutul lor nu este încorporat în alte site-uri.
(Citat din MDN)
Mai jos este munca mea în jurul valorii de această problemă:
Încărcați conținutul de AWS S3, și se va crea un https link-ul de resurse. Notificare: setați permisiunea de a fișierul html pentru a permite toată lumea-l vedea.
După aceea, putem utiliza ca src
de iframe în https site-uri web.
Ai putea încerca decopertarea orice ai nevoie cu PHP sau alt server side limba, apoi pune iframe la fragmentat de conținut. Aici's un exemplu cu PHP:
scrapedcontent.php:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
index.html:
<iframe src="scrapedcontent.php"></iframe>
Folosi propriile HTTPS-să-HTTP proxy inversă.
Dacă cazul dumneavoastră de utilizare este de aproximativ câteva, rareori schimbarea Url-uri pentru a încorpora în iframe
, puteți pur și simplu înființat un reverse proxy pentru acest lucru pe propriul server și configurați-l astfel încât o "https" URL-ul pe server hărți pentru a o "http" URL-ul pe proxy server. Deoarece un reverse proxy este pe deplin serverside, browser-ul nu poate descoperi că este "doar" vorbesc cu un proxy de pe site-ul real, și, astfel, nu se va plânge ca o conexiune la proxy foloseste SSL în mod corespunzător.
Dacă, de exemplu, utilizați Apache2 ca serverul dvs. de web, apoi a se vedea aceste instrucțiuni pentru a crea un reverse proxy.