私は、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">
これが役に立つことを、また記録としても願っています。