HTTPS ページで HTTP AJAX 操作を実行すると「混合コンテンツがブロックされました」というメッセージが表示される 質問する

HTTPS ページで HTTP AJAX 操作を実行すると「混合コンテンツがブロックされました」というメッセージが表示される 質問する

私は、CRM (ViciDial) に (GET 経由で) 送信するフォームを持っています。フォームは正常に送信できますが、そうすると、CRM の処理ファイルは成功のテキストをエコーするだけで、それで終わりです。

そのテキストの代わりに、Web サイトにサンキュー ページを表示したいので、AJAX を使用してフォームを送信し、必要なページにリダイレクトすることにしました。ただし、ブラウザーで次のエラーが表示されます。

混合コンテンツ: 「https://page.com」のページは HTTPS 経由で読み込まれましたが、安全でない XMLHttpRequest エンドポイント「http://XX.XXX.XX.XXX/vicidial/non_agent_api.php?queries=query=data」を要求しました。この要求はブロックされました。コンテンツは HTTPS 経由で提供する必要があります。

これは私の AJAX スクリプトです:

<script>
SubmitFormClickToCall = function(){
            
    jQuery.ajax({
        url: "http://XX.XXX.XX.XX/vicidial/non_agent_api.php",
        data : jQuery("#form-click-to-call").serialize(),
        type : "GET",
        processData: false,
        contentType: false,
        success: function(data){
            window.location.href = "https://www.example.com/thank-you";
        }
    });
}
</script>

URL に https を設定するだけでは機能しません。GET 経由でデータを送信し、ユーザーをサンキュー ページにリダイレクトする方法はありますか?

============================

ここでの問題は混合コンテンツでした。つまり、HTTPS 経由でページを読み込み、AJAX 経由で HTTP 内の API にアクセスしようとしていたのです。しかし、ブラウザはそれを許可してくれません。

したがって、API を HTTPS に設定できない場合 (これが私のケースでした)、別の方法でこれにアプローチすることができます。

主な問題は、混合コンテンツの問題ではなく、データを API に送信し、ユーザーを派手なサンキュー ページにリダイレクトしたいということでした。AJAX を使用する代わりに、データを受信し、それを curl を使用して API に送信する PHP ファイルを作成し (これはサーバー側で行われるため、混合コンテンツの問題はありません)、満足したユーザーを派手なサンキュー ページにリダイレクトしました。

ベストアンサー1

私たちが管理していないサードパーティの API を使用しているため、次のコードを HTML ページに追加することでこの問題を解決しました。

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

これが役に立つことを、また記録としても願っています。

おすすめ記事