2

これはおそらく私が今まで遭遇した中で最も奇妙なエラーです:

だから私は一緒に投げたWebサービスへのjQuery.ajax呼び出しのバンドルを持っています。FirefoxとChromeでうまく機能しますが、 Fiddlerを実行していない限り、IE8では何もしません。(これはここで報告された問題に似ていますが、私は言及されたものを無駄に試しました。)

これらの非機能呼び出しでは、jqXHRオブジェクトを適切に構築しているように見えますが、何かが欠けています。ただし、何がわからないのか-私はjQueryの内部動作にあまり詳しくないので、デバッガーで呼び出しをステップ実行するだけで、私にとってはそれほど多くのことを行うことができません。

呼び出しは次のとおりです。

$.ajaxSetup({
    type: "POST",
    timeout: 30000,
    contentType: "application/json; charset=utf-8"
});

$.ajax({
url: "/PSWS/UserManager.asmx/Login",
data: '{"emailAddress":"' + myEmailAddress + '","password":"' + myPassword + '","stayLoggedIn":' + (myStayLoggedIn ? 'true' : 'false') + '}',
success: function (response) {
    if (!response.Success) {
        alert(response.Message);
    } else {
        $(this).find('.message').remove();
        $.fn.colorbox.close();
    }
},
dataType: 'json',
error: function (jqXHR, textStatus, errorThrown) {
    $(this).find('.message').remove();
    $(this).prepend('<div class="message message_error">Error!<br/>' + jqXHR.status + ' - ' + jqXHR.statusText + '</div>');
}

}); `

送信されたものと受信されたもののどちらかで、JSONに何か問題があるのではないかと思いました。Fiddler以外でこれをキャプチャする方法はわかりませんが、有効なようです。とにかく、そのパーサーとJSONLintに対して十分に有効です。

送信済: {"emailAddress":"test@example.com","password":"asdasdasd","stayLoggedIn":true}

受け取った: {"__type":"PSUserManagerService.SystemResponse","Success":false,"Message":"Error logging in: Invalid username and/or password.","Subscriptions":null}

4

2 に答える 2

1

私は同じ問題を抱えていました。

私の場合、これは NTLM (SSO) 認証が原因でした。

Internet Explorer は、各 post-Request で NTLM 認証をチェックします。


リクエスト ヘッダー (DebugBar プラグインから)

クッキー: JSESSIONID=2323......323239

承認: NTLM....


フィドラーで機能する理由がわかりません...おそらく、このプロキシを介して認証ヘッダーが操作されます。

于 2012-09-21T09:34:02.880 に答える
0

これが NTLM 認証に関連している可能性があるという Witali の意見はおそらく正しいでしょう。

私の場合、問題を診断するのは非常に困難です。同様の構成を持つ開発、テスト、および本番の 3 つのネットワークがあります。同じ IE 8 は、JSON オブジェクトを開発およびテストに正常に POST できますが、製品にはできません。したがって、クライアント側の問題ではないはずです。次に、アプリケーションやバージョン管理などのサーバーの問題も除外します。これは、Chrom と Firefox が同じ製品サーバーのアプリへの投稿に成功する可能性があるためです。ただし、フィドラーを使用すると製品で動作するため、クライアントの問題のように見えます。

とにかく、私が実験した最終的な解決策は、IIS のアプリケーション レベルではなく、サイト レベルで Windows 認証を有効にすることでした (私のサイトにはいくつかのアプリケーションが含まれています)。

また、IIS (サイト) -> Windows 認証 -> 詳細設定 -> プロバイダー、ネゴシエートではなく NTLM をトップにする必要があります。

お役に立てれば。

于 2013-01-21T06:30:56.183 に答える