首頁 >後端開發 >php教程 >如何使用 AJAX GET 操作處理 HTTPS 頁面中的混合內容錯誤?

如何使用 AJAX GET 操作處理 HTTPS 頁面中的混合內容錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-13 04:34:021124瀏覽

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

使用AJAX GET 操作處理HTTPS 頁面中的混合內容錯誤

從HTTPS 頁面向HTTP 端點提交GET 請求時,您可能會請求遇到「混合內容被阻止」錯誤。出現此錯誤的原因是瀏覽器阻止在安全 HTTPS 頁面上載入不安全的 HTTP 內容。

範例:

考慮此AJAX 腳本:

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

在HTTPS 頁面(https://mypage.com) 上執行此腳本時,瀏覽器將因混合內容而阻止對HTTP 端點(http://example.com/api) 的請求。

解決方案:

雖然將 API 端點更改為 HTTPS 是理想的選擇,但並非總是可行。這是一個替代方案:

1。建立 PHP 檔案:

建立一個透過 POST 接收表單資料的 PHP 檔案(例如 process_form.php)。

2.處理 PHP 檔案中的 POST 要求:

在 PHP 檔案中,使用 cURL 將資料傳送到 HTTP API。

<?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.將表單提交至 PHP 檔案:

將表單的操作改為 PHP檔案:

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

4.停用嚴格混合內容檢查(選用):

如果上述解決方案不起作用,您可以在HTML 頁面中新增以下元標記以停用嚴格混合內容檢查:

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

注意:這不是建議的解決方案,因為它允許在安全頁面上載入不安全的內容。

以上是如何使用 AJAX GET 操作處理 HTTPS 頁面中的混合內容錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn