3

我有一个跨两个子域运行的网络应用程序,所有调用都按预期工作。问题是当我创建一个跨子域 XmlHTTPRequest 时,在 Mobile Safari 中,网络指示器(在状态栏中)永远旋转,而不管请求是否成功。如果我在我的本地子域上发出请求,则在调用返回时指示器会停止。

我正在使用 AngularJS 来完成我的 XHR 工作。这段代码按我的预期工作:

$http( {method: "GET", url: "http://my.domain.com"} ).success (data) ->
    console.log "success " + data
.error (data, status) ->
    console.log status + " " + data

但如果我这样做:

$http( {method: "GET", url: "http://other.domain.com"} ).success (data) ->

然后网络指示器永远旋转。它似乎在桌面 Safari 中正确完成(据我所知)。Web Inspector 中没有任何内容表明任何呼叫处于待处理状态 - 我可以看到返回的数据,并且我的应用程序接收到所有回调。在 Chrome(iOS 和桌面)中,网络指示器按预期停止旋转。

编辑

我向Apple提交了一个错误。他们因“信息不足”而将其关闭,但从未要求提供更多信息。我可以使用 iOS 7 或 6.1 进行复制,但在 iOS 6.0 中,网络微调器按预期停止。这强烈表明这是一个Apple错误。

我在没有 Angular 的情况下也进行了复制:

<script type="text/javascript">
    xhr = new window.XMLHttpRequest();
    xhr.onreadystatechange = function() {
        console.log("ready state changed to " + xhr.readyState);
        if (xhr.readyState == 4) {
            console.log("HTTP status " + xhr.status);
        }
    };
    xhr.open("get", "//my.domain.com", true);
    xhr.send();
</script>

同样,如果请求改为 to //other.domain.com,其中“其他”是与托管脚本/HTML 不同的子域,则网络微调器将永远运行。

4

0 回答 0