1

ASP.NET MVC 4 アプリケーションがあります。このアプリケーションは、iFrame を介して別のサイト (別のドメイン) に埋め込まれます。

アプリケーションの一部には、州に基づいて都市のリストを取得する機能があります。これを行うためにjQuery Ajaxを使用しています。IEを除くすべてのブラウザが動作しています。

私のグーグル検索に基づいて、IEにXDomainRequestを使用する必要があることを知りました。コードは次のとおりです。

/* For dynamically getting list of cities by state */
        $("#state").change(function() {
            $(".city").empty();
            if ($(this).val() != "") {
                if ($.browser.msie && window.XDomainRequest) {
                    var data = "state=" + $(this).val();
                    var xdr = new window.XDomainRequest();
                    xdr.open("POST", "/Search/GetCities");
                    xdr.send(data);
                    xdr.onload = function() {
                        var json = $.parseJSON(xdr.responseText);
                        if (json == null || typeof(json) == 'undefined') {
                            json = $.parseJSON(data.firstChild.textContent);
                        }
                        processData(json);
                    };
                    xdr.send();
                } else {

                    $.ajax({
                        type: "POST",
                        url: "/Search/GetCities",
                        data: {
                            state: $(this).val()
                        },
                        dataType: "json",
                        success: function(data) {
                            if (data == '') {
                                $("#state").change();
                            } else {
                                $(".city").css("display", "none");
                                var items = "<option value=\"\" selected>Please Select</option>";
                                $.each(data, function(i, item) {
                                    items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
                                });
                                $(".city").append(items);
                                $(".city").css("display", "");
                                $(".city").attr('disabled', false);
                            }
                        }
                    });
                }
            }
        });
        /* End dynamically getting list of cities by state */

これがキッカーです。FF、Chrome、および Safari では、認証 Cookie は Ajax 呼び出しで渡されますが、IE では渡されないため、IE は私が認証ユーザーではないと判断し、ログイン URL で応答します。

これを IE で動作させるには何が欠けていますか?

ありがとう!

4

1 に答える 1

0

あなたの問題は投稿に使用しているjqueryに関連しているのではなく、IEのクロスドメインCookieの問題であるということです。

P3P ヘッダーを追加してみてください。この件に関する適切な SO スレッドは、次の場所にあります。

Cookie がブロックされている/Internet Explorer の IFRAME に保存されていない

于 2012-07-19T17:27:16.633 に答える