Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behandelt man Fehler mit gemischten Inhalten in HTTPS-Seiten mit AJAX-GET-Vorgängen?

Wie behandelt man Fehler mit gemischten Inhalten in HTTPS-Seiten mit AJAX-GET-Vorgängen?

Susan Sarandon
Susan SarandonOriginal
2024-11-13 04:34:021020Durchsuche

How to Handle Mixed Content Errors in HTTPS Pages with AJAX GET Operations?

Umgang mit Fehlern bei gemischten Inhalten in HTTPS-Seiten mit AJAX-GET-Vorgängen

Wenn Sie eine GET-Anfrage von einer HTTPS-Seite an einen HTTP-Endpunkt senden, müssen Sie Möglicherweise tritt der Fehler „Gemischter Inhalt blockiert“ auf. Dieser Fehler tritt auf, weil der Browser das Laden unsicherer HTTP-Inhalte auf sicheren HTTPS-Seiten verhindert.

Beispiel:

Bedenken Sie dieses AJAX-Skript:

$.ajax({
    url: "http://example.com/api",
    success: function(data) {
        // Redirect to HTTPS thank-you page
        window.location.href = "https://thankyou.com";
    }
});

Wenn Sie dieses Skript auf einer HTTPS-Seite (https://mypage.com) ausführen, blockiert der Browser die Anfrage an den HTTP-Endpunkt (http://example.com/api) aufgrund gemischter Inhalte.

Lösung:

Die Änderung des API-Endpunkts auf HTTPS ist zwar ideal, aber möglicherweise nicht immer möglich. Hier ist eine alternative Lösung:

1. Erstellen Sie eine PHP-Datei:

Erstellen Sie eine PHP-Datei (z. B. process_form.php), die die Formulardaten per POST empfängt.

2. Behandeln Sie die POST-Anfrage in der PHP-Datei:

Verwenden Sie in der PHP-Datei cURL, um die Daten an die HTTP-API zu senden.

<?php
    $api_url = "http://example.com/api";
    $post_data = $_POST;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
    $result = curl_exec($ch);
    curl_close($ch);

    // Redirect to thank-you page
    header("Location: https://thankyou.com");
?>

3. Formular an PHP-Datei senden:

Ändern Sie die Aktion Ihres Formulars in die PHP-Datei:

<form action="process_form.php" method="post">
    <!-- Form fields -->
    <input type="submit" value="Submit">
</form>

4. Deaktivieren Sie die strikte Prüfung gemischter Inhalte (optional):

Wenn die obige Lösung nicht funktioniert, können Sie der HTML-Seite das folgende Meta-Tag hinzufügen, um die strikte Prüfung gemischter Inhalte zu deaktivieren:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Hinweis: Dies ist keine empfohlene Lösung, da dadurch unsichere Inhalte auf sichere Seiten geladen werden können.

Das obige ist der detaillierte Inhalt vonWie behandelt man Fehler mit gemischten Inhalten in HTTPS-Seiten mit AJAX-GET-Vorgängen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn