web-dev-qa-db-ja.com

jQueryでSSL証明書エラーをバイパスし、AJAX

私はjQuery/AJAXの初心者です。 puposeをテストするためのボタンが付いた小さなアプリケーションがあります。ボタンをクリックすると、同じドメインにあるサーバーに接続して、データを取得して警告します。

問題:アプリケーションがサーバーに接続できません。次のスクリーンショットは、Google Chromeの開発者ツールからのものです。

eror

サーバーには、独自の自己署名証明書があります。 Webブラウザ経由でサーバーに接続すると、以下に示すようにSSL証明書の警告が表示されます。

ssl-error

続行をクリックしてサーバーにログインすると、この後、アプリケーションはサーバーからデータを取得することもできます(Webアプリのボタンをクリックすると、サーバーから取得したデータを警告します)。

質問:これに対する回避策はありますか、このエラーを回避できますか? Webブラウザー経由でサーバーにログインした後、なぜ機能するのですか?私のアプリは同じドメイン内でローカルに使用され、公開アプリではありません。

jQuery Code:私はこのコードを持っています:

$('#mybutton').click(function(){
    $.ajax({
        type: "GET",
        url: "https://192.168.150.33/Api/loc?jsonpCallback=myCallback",
        dataType:"jsonp",
        async: false,
        beforeSend: function (request){
            request.withCredentials = true;
            request.setRequestHeader("Authorization", "Basic " + btoa('admin' + ":" + 'password'));
            },
        success: function(response){
                alert('hi');
            },
    });
});
function myCallback(response){
        data= JSON.stringify(response)
        alert(data)

ここ は同じ問題に対処する投稿です。それによると、この投稿を理解している限り、解決策はありません。任意の提案が役立ちます。ありがとう

17
ρss

ブラウザで実装されたSSLエラー/警告動作をプログラムでバイパスすることはできません。セキュリティレイヤーを完全に無効にできる場合は可能です。

これをローカル/Windowsドメイン環境で行う場合は、自己署名証明書を 信頼できるストア に追加するだけです。

さらに、証明書は(通常)IPアドレスではなくドメイン名に発行されるため、Ajax呼び出しで同じことを行う必要があります。

18
Alex K.