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 回答