XHR 请求响应流在 IE 中有效但在 Edge 中无效

问题描述

如果您有时间,我将针对返回 XML 流的 Tomcat servlet 发出 XHR 请求。我一直在研究从 ActiveX MSXML 转换为 XHR 的规模。我合并了承诺,因为 ActiveX 是同步的,而 XHR 是异步的。返回的 XML 很庞大,但 XHR 请求在 IE 11 中没有问题。Edge 似乎挂起并停止执行。什么都没发生。另一个“较小的”XHR 请求,获取 XSL,很好。 Tomcat 日志说它处理来自 Edge 的请求并发送响应,没问题。无论如何,代码非常简单。非常感谢。

 xmldoc =  new XMLHttpRequest();
    return new Promise(function(resolve,reject) {
        setTimeout(function() {           
            xmldoc.onreadystatechange = function() {
                if (this.readyState == 4 && this.status ==  200) {
               
                   alert(xmldoc.responseText);
                   resolve(xmldoc);
                } 
            };
            xmldoc.open("GET",url,true);
            xmldoc.send();     
        },200);
    });

解决方法

弄清楚如何在 Edge 中调试后,结果是 Tomcat 的 CORS 过滤器错误。我在 web.xml 中设置了过滤器,使用特定的 cors.allowed.origins。 tomcat.apache.org/tomcat-9.0-doc/config/filter.html#CORS_Filter