1

次のコードを使用して、ASP.net MVC アプリケーションからデータを要求しています。リクエスト/レスポンスを確認できるように、TcpTrace も使用しています。

if (isInteger($('#txtDay').val()) && isInteger($('#txtMonth').val()) && isInteger($('#txtYear').val())) {
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: strApi + 'wip/job/getsummary/' + $('#txtYear').val() + '/' + $('#txtMonth').val() + '/' + $('#txtDay').val(),
        data: '{}',
        dataType: 'json',
        cache: false,
        beforeSend: function(XMLHttpRequest) { ShowLoading(); },
        success: function(data, textStatus) {
            ShowJobSummaryList(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            HideLoading();
            ShowStatus('unable to retrieve job summary list');
            alert(XMLHttpRequest.statusText);
            alert(textStatus);
        },
        complete: function(XMLHttpRequest, textStatus) {
            HideLoading();
        }
    });
}

IE を使用すると、すべて正常に動作します。コンテンツ タイプは正しく application/json に設定されています。ただし、Firefox 3.5.5 では、コンテンツ タイプがありません。

OPTIONS /api/wip/job/getsummary/2009/11/25 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with

これにより、ASP.net MVC は XML を返します。Firefox がコンテンツ タイプを送信しない理由を説明できる人はいますか?

4

2 に答える 2

1

オプション要求を送信しているようです。この問題の通常の原因は、特定のブラウザー (firefox を含む -こちらを参照) が許可しない別のドメインに対して ajax 要求を使用しようとした場合です。

リクエストの送信先の URL が別のドメインにあるかどうかを明確にしていただけますか。この場合、jsonp を使用するか、サーバー プロキシを使用する必要があります。

于 2009-11-26T22:02:49.387 に答える
0

同様のことが私にも起こっています。Fiddler で同じリクエストを発行すると機能しますが、Firefox HttpRequester で発行すると機能しません。両方のリクエストを比較したところ、HttpRequester がリクエスト ヘッダーを変更しているように見えます。私はそれを機能させるためにいくつかの方法を試しました.Rawリクエストを編集しましたが、最終的なリクエストを確認すると、次のようにコンテンツタイプが複製されています:

Content-Type: application/json, application/json

また、他のヘッダーも多数追加します。しかし、Fiddler によって行われた最終的な要求を確認したところ、次のようになりました。

Content-Type: application/json

したがって、それは機能しました。

また、Mozilla Firefox 製品サポート ページで、同様のバグを訴えるレビューを見つけました。しかし、これはHttpRequesterで以前に機能していたことを覚えているので、最新バージョンと関係があります。

于 2017-02-15T18:38:25.747 に答える