ホームページ >バックエンド開発 >PHPチュートリアル >AJAX GET 操作を使用して HTTPS ページの混合コンテンツ エラーを処理する方法

AJAX GET 操作を使用して HTTPS ページの混合コンテンツ エラーを処理する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-13 04:34:021126ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。