Browser betrachten zwei verschiedene Protokolle als unterschiedliche Domäne, so dass der lokale Speicher für beide Protokolle unterschiedlich ist. Wir können das mit post message api tun. Wenn wir Daten im lokalen Speicher setzen, nennen wir eine Funktion in unserem iFrame und leiten diese Daten als Nachricht weiter .
Verwenden Sie diesen Code in Ihre http
Seite
var data = "Smith";
localStorage.setItem("lastname", data);
let o = document.getElementsByTagName('iframe')[0];
o.contentWindow.postMessage({
'func': 'set_data_function',
'message': data
}, '*');
Jetzt müssen wir diese Daten in unserem https
empfangen und diese Daten für unsere https
auch in gleicher Weise einstellen können wir Daten aus dem lokalen Speicher beider Protokolle entfernen.
Und dieser Code in Ihrer https
Seite, die Sie Iframe laden.
// this is the function which is we calling from our http
window.set_data_function = function (data) {
console.log('called from parant');
localStorage.setItem("lastname", data);
}
$(function() {
window.addEventListener('message', receiver, false);
(window).set_data_function = this.set_data_function.bind(this);
function receiver(e) {
// also we able to check the origin this will make our script secure
console.log(event.origin);
if (event.origin !== 'http://localhost:8081') {
return;
}
var data = event.data;
console.log(typeof (window[data.func]));
window[data.func].call(undefined, data.message);
if (typeof (window[data.func]) == 'function') {
window[data.func].call(undefined, data.message);
}
}
});
hoffen, dass es Ihnen viel Glück muss
Die Politik ist, dass das Protokoll übereinstimmen helfen. Eine Lösung wäre, die Daten auf Ihrem Server zu speichern und sie bei Bedarf abzurufen. –