ホームページ >バックエンド開発 >PHPチュートリアル >AJAX GET 操作を使用して HTTPS ページの混合コンテンツ エラーを処理する方法
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 サイトの他の関連記事を参照してください。