1. ホーム
  2. javascript

[解決済み] HTTPSページでHTTP AJAXを実行すると「Mixed Content Blocked」と表示される。

2022-05-13 03:49:27

質問

あるフォームをcrm(ViciDial)に送信します(GETで送信する必要があるため)。フォームを正常に送信することはできますが、送信すると、crmの処理ファイルが成功のテキストをエコーするだけです。

そのテキストの代わりに、私はウェブサイトに感謝のページを表示したいので、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でページを読み込んで、HTTPのAPIをAJAXでヒットさせようとしていることを意味します。しかし、ブラウザはそれを許可してくれません。

ですから、もしAPIをHTTPSに設定できない場合(私の場合はそうでした)、まだ別の方法でアプローチすることができます。

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

どのように解決するのですか?

HTTPS を使用してブラウザでページを読み込むと、ブラウザは HTTP 経由のリソースの読み込みを拒否します。試してみたところ API の URL を HTTP ではなく HTTPS に変更すると、通常はこの問題を解決できます。 . しかし、あなたの API は HTTPS 接続を許可してはいけません。このため、メインページでHTTPを強制するか、HTTPS接続を許可するように要求する必要があります。

これについての注意。AJAXでロードしようとするのではなく、APIのURLにアクセスしても、リクエストはまだ動作します。これは、ブラウザが保護されたページ内からリソースを読み込むのではなく、安全でないページを読み込んでいるため、それを受け入れているためです。しかし、AJAXで利用できるようにするためには、プロトコルが一致する必要があります。