【问题标题】:AngularJS, Internet Explorer File Upload hanging after 60 secondsAngularJS,Internet Explorer 文件上传在 60 秒后挂起
【发布时间】:2014-12-29 11:46:50
【问题描述】:

我遇到了一个仅在 IE 中出现的异常问题。

我有一个文件上传 UI,其中 on-change 事件与调用 Web api 服务的 Angular 指令挂钩

 element.on('change', event => {
    scope.onChange();

    if (event.target.files.length > 0) {

        var fd = new FormData();
        fd.append('file', event.target.files[0]);

        $http.post('/api/upload', fd, {
                transformRequest: angular.identity,
                headers: { 'Content-Type': undefined },
            })
            .success(data => {
                scope.onSuccess({ data: data });
            })
            .error(data => {
                scope.onError({ data: data });
            });
    }
});

这适用于 Firefox 和 Chrome。它也适用于 IE,除非我回到页面然后等待 60 秒(如果我等待不到 60 秒,则可以正常工作)。

如果我等待 60 秒,仍然会触发 onchange 事件并尝试发布,但是,由于请求为空,因此永远无法访问 API 服务。这意味着 xmlhttprequest 只是挂起:

有什么想法吗?

【问题讨论】:

标签: angularjs internet-explorer file-upload


【解决方案1】:

虽然上述解决了您设置的时间段内的问题,但它确实意味着对注册表的更改。这也是一种捏造,而不是真正解决问题的方法。

我们的问题是帖子没有被正确验证并且再也没有回来。

在 POST 之前执行 GET 强制身份验证并解决问题

更新:此链接提供的信息类似于我们遇到的问题 http://blogs.msdn.com/b/ieinternals/archive/2010/11/22/internet-explorer-post-bodies-are-zero-bytes-in-length-when-authentication-challenges-are-expected.aspx

【讨论】:

  • 我遇到了这个确切的问题 - 我可以修复注册表并且它可以工作,但它不可行。您在哪里提出 GET 请求?
  • 我添加了一个链接以获取更多信息...我们只是在 POST 之前进行了 GET。当 get 成功返回(正确重置身份验证)然后执行 POST
猜你喜欢
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多