web-dev-qa-db-ja.com

IE10 / 11 Ajax XHRエラー-SCRIPT7002:XMLHttpRequest:ネットワークエラー0x2ef3

私は自分の選択肢を使い果たしたように感じているので、この問題に数日間取り組んでおり、このフォーラムに手を差し伸べています。 Drupal 7 Webサイトでホストされているフォームがあり、フォームの値を外部URLに送信する必要があります。フォームはjQuery.AJAXを介してHTTPSプロトコル経由でPOSTリクエストを使用します

  • フォームはChrome、Firefox、Safariで正常に動作します
  • IE10 +コンソールで次のエラーが表示されます(IE10 +を使用している場合、ajax呼び出しは常にエラー関数に入ります)。

SCRIPT7002:XMLHttpRequest:ネットワークエラー0x2ef3、エラー00002ef3が原因で操作を完了できませんでした

私は次を試しました:

  • contentTypeの追加:

    _// causes all of the jQuery callbacks to error out
    "application/json; charset=utf-8",
    _
  • 実際のPOST(別のSOスレッドで提案されているように)の前にAjax GET呼び出しを試行する

  • header( 'Content-Type: application/json; charset=utf-8' );をリクエストに追加しました

  • セット_crossDomain: true_

適切なCORSヘッダーが追加され、フォームコードが以下に貼り付けられています。

_$.ajax({
    url: "[URL]", //the page to receive the form data  
    crossDomain: true,
    type: "POST",
    data: dataString, //posting to API 
    dataType: "json", //the data type the function should expect back from the server     
    success: function(data) {         
        if (data.response_status == "1") { //error for at least 1 field
             //display error message 
             }
             else { 
             //display thank you label next to input
             }

        } else {
           //All form fields completed successfully! Redirect user to Thank you confirmation page            
        } 
     },
    error: function(jqXHR, textStatus, errorThrown) {
             alert("there is an error!");
             console.log("in error section");
             console.log("jqXHR: " + jqXHR);
             console.log("jqXHR.responseText: " + jqXHR.responseText);
             console.log("textStatus: " + textStatus);
             console.log("errorThrown: " + errorThrown);
             data = $.parseJSON(jqXHR.responseText);
             console.log("parseJSON data: " + data);                           
    }        
    });         
  });
});
_

SCRIPT7002:XMLHttpRequest:ネットワークエラー0x2ef3、エラー00002ef3が原因で操作を完了できませんでした

任意のガイダンスが役立ちます!ありがとう

35
ForTheWin

OPは、サーバーがHTTPS CertificateRequestメッセージを使用して証明書を要求し、クライアントがすぐに接続をFINdすることを示すWireSharkキャプチャを提供しました。

クライアント証明書を要求しないようにサーバーを構成した後、問題はなくなりました。

Fiddlerを使用すると、そのように構成しない限り、Fiddlerはブラウザーからクライアント証明書を要求しないため、問題は解消されます。

影響を受けるクライアントマシンのみが一致する証明書を持っているのか、CORS XHR要求のwithCredentialsフラグがこのシナリオに関連するのかどうか、疑問に思っています。

12
EricLaw

IE 8 + 9 + 10 + 11 Ajax呼び出し。この問題はランダムに発生していました。他のすべてのブラウザーには問題はありませんでした。

KeepAlive接続間に競合状態があったと仮定します。 Apache 2.4.7を使用しています。

/ etc/Apache2/Apache2.confのApache 2のデフォルト設定では、Ajax呼び出しの10回ごとにエラーを再現できました。

KeepAlive On
KeepAliveTimeout 5

解決策:いずれかの設定

KeepAlive off

または

KeepAliveTimeout 1

私のために問題を解決しました。 0x2ef3-Networkエラーが発生した場合は、最初にKeepAlive offをお勧めしますサーバー上。エラーがなくなった場合は、再度オンにして、KeepAliveTimeoutの値でテストします。 msに設定することもできます

Internet ExplorerでのみKeepAliveを無効にする方法もあります。

9
alfonx

私の環境では、最初に古いコードをコピーして貼り付けて使用しました。したがって、「contentType」は"application/json"でした。

マウスを使用して送信ボタンをクリックした限り、Windows 8上のIE11が非常に高い確率で機能しないことがわかりました。しかし、キーボードのEnterキーを押すと、IE11でも問題なく動作することもわかりました。

input elemntsおよびsubmit buttonform要素にネストされていることに注意してください。

しばらく苦労してこのページにアクセスしましたが、バックエンドテクノロジーについて何も知らなかったため、問題を解決できませんでした。私は知識の限られたフロントエンドの男でした。

それから私は一つ一つたくさんの修正を試みました。突然、jQueryの公式APIドキュメントに触発されました。 「contentType」がデフォルト値である"application/x-www-form-urlencoded; charset=UTF-8"になるように、「contentType」パラメーターをコメント化しました。その後、問題は解決されます。

これが役立つことを願っています。

6
wu le-chuan

私は同じ問題に直面していました。私にとって、この問題は、Post呼び出しを介したIE11でのみ発生しているようでした。私は、AngularJSプロバイダー$ httpを使用して呼び出しを行いました。これはIEのバグのようで、証明書の問題です。 POST呼び出しが行われると、セキュリティ証明書情報は適切にロードされません。回避策として、POST呼び出しを行う前に、GET呼び出しを行って正しく証明書を取得します。以下のサンプルコードをご覧ください(AngularJSを使用しています)

$http({
    method: "GET",
    url: "/api/DummyGet"
}).success(
$http({
        method: "POST",
        url: "/api/PostCall",
        data: data
})
);

詳細については、次の2つのリンクをご覧ください- http://jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/
- IE10/IE11は、エラー「ネットワークエラー0x2ef3」でキャッシュをクリアした後、Ajaxポスト要求を中止します

6

私は同じような状況にあり、多くの調査を行った結果、問題は別のものになりましたが、誰かが同じエラーを探すのに役立つと期待して、ここに投稿したいと思います:

Apacheの接続タイムアウトは5秒でした。 Win 7のInternet Explorer 11は、アクティブセッションが60秒であると仮定して、もはやアクティブなセッションが存在しないという事実を無視しているように見えました。 Apacheの設定を60秒のタイムアウトに変更した後、私の問題は解決しました。

2
kimyas78

IISアプリケーション、AJAX JSONを返した投稿要求は失敗し、最終的には中止を返します:

SCRIPT7002:XMLHttpRequest:ネットワークエラー0x2ef3

コンソールのエラー。他のブラウザ(Chrome、Firefox、Safari)では、まったく同じAJAXリクエストは問題ありませんでした。

さらなる調査の結果、サーバーからの応答にステータスコードが欠落していることが明らかになりました。この場合、500内部エラーであるはずです。

これは、明示的に設定するエラーコードを必要とするサービススタックを使用するC#Webアプリケーションの一部として生成されていました。

IEは接続を開いたままにしたようで、最終的にはネットワーク層が接続を閉じ、要求を「中止」しました。コンテンツやその他のヘッダーを受信したにもかかわらず。

ステータスコードを正しく返すようにWebアプリケーションを更新すると、問題が修正されました。

おそらく、IEが投稿のヘッダーを処理する方法に問題があります。

これが誰かを助けることを願っています!

2
Andrew Keeling

まあ、私はIE 11.で同じエラーを受け取った。

  • サイトをhttpとして表示
  • このサイトはhttpsへのajax呼び出しを行います
  • sslは自己署名されましたが、ブラウザにはまだ例外がありませんでした。
  • 証明書の例外が作成された後、すべてが正常に機能します。

それが誰かを助けることを願っています。

1
Trixor

IE11とEdgeでも同じエラーが発生していました。 jQuery AJAXリクエストは、正確に300秒後に一貫してエラー_XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3._をスローしていました。 (ChromeとFirefoxは問題ありませんでした)

ロードバランサー(この場合はF5)のアイドルタイムアウト設定であることが判明しました。 Fiddlerを使用して問題を診断した結果、ブラウザーでより有用なエラーメッセージが表示されました。Failed to load resource: the server responded with a status of 504 (Fiddler - Receive Failure) Fiddlerを実行すると、ChromeおよびFirefox。

1
herdistheword

ASP.NET MVCでも同じエラーが発生し、ようやく回避できました。各ページに@ Html.AntiForgeryToken()が含まれる数百の埋め込みフォームを生成していました。これにより、クライアント側でCookieが作成されると考えています。潜在的にIEはCookie(またはIEで知っている何か)のためのスペースを使い果たしていました。それを削除し、私の問題はなくなりました。

1
Ron

私にとって、この問題の根本的な原因は何であるかについて、私の見解を述べたいだけです。

NodeJS REST api。を呼び出しているAngular2アプリがあります。残りのAPIは、別のサービスを呼び出します(SOAPは信じています)。

SOAP=サービスには、1つの環境のみでエンドポイント(?)がありません(他のどこでも動作しました)。NodeJSAPIがSOAP = service、soapサービスは「Xは関数ではない」というエラーを返していました。エラー応答がNodeJSに返されたとき、適切なエラー/例外処理がなかったため、サービスを完全に強制終了していました。 UIが応答しませんでした。

0
ganders