Internet Explorer中的CORS请求

蜡烛

我需要使用应该在Internet Explorer中运行的Javascript发出发布请求。客户端和服务器位于不同的服务器上,并使用不同的协议。

我尝试了2种不同的方式

1)

                    var xdr = new XDomainRequest();
                    var user = document.getElementById('username').value;
                    var psw = document.getElementById('password').value;
                    var params = "username="+user+"&password="+psw+"&system=telenetweb";
                    xdr.open("post", url);

                        xdr.onprogress = function () {
                        //Progress
                      };

                      xdr.ontimeout = function () { 
                        //Timeout
                      };

                      xdr.onerror = function () { 
                        //Error Occured
                      };

                      xdr.onload = function() {
                        //success(xdr.responseText);
                      }

                      setTimeout(function () {
                        xdr.send(params);
                      }, 0);

但是它不起作用,因为我正在从http向https发出请求。

2)

            var http;
            try {
                http = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                  http = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (E) {
                  http = false;
                }
            }
              if (!http && typeof XMLHttpRequest!='undefined') {
                http = new XMLHttpRequest();
            }

            var user = document.getElementById('username').value;
            var psw = document.getElementById('password').value;
            var params = "username="+user+"&password="+psw+"&system=telenetweb";

            http.open("POST", url, true);
            http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            http.setRequestHeader("Content-length", params.length);
            http.setRequestHeader("Connection", "close");
            http.send(params);

这适用于Chrome浏览器,但不适用于IE,因为IE不会将Origin标头附加到请求中。

我怎么解决这个问题?

inf3rno

MSIE的行为显然取决于版本。我不建议您使用XDomainRequest,因为它非常有限,因此不值得付出努力。XHR2从MSIE版本10的支持,你应该使用,它的工作原理完全一样的方式在Chrome或Firefox。如果您想要具有较低MSIE版本的CORS,我认为您应该忘记它。

如果您确实需要低版本的MSIE(我对此表示怀疑),则可以使用JSONP,它也有局限性,但是也许可以解决您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何调试Internet Explorer请求?

来自分类Dev

在Internet Explorer中对齐

来自分类Dev

在 Internet Explorer 中获取?

来自分类Dev

Internet Explorer中的jQuery.ajax PUT请求问题

来自分类Dev

jQuery AJAX请求在Internet Explorer中不起作用

来自分类Dev

Internet Explorer在form.submit()请求中缺少POST数据

来自分类Dev

Internet Explorer 11不会在CORS请求上添加Origin标头吗?

来自分类Dev

Internet Explorer 11不会在CORS请求上添加Origin标头吗?

来自分类Dev

Internet Explorer 9缓存了PHP Ajax请求

来自分类Dev

Internet Explorer中的动画路径

来自分类Dev

Selenium:Internet Explorer中的NoSuchElementException

来自分类Dev

Internet Explorer中的不同颜色

来自分类Dev

Internet Explorer 11中的formatBlock

来自分类Dev

通过Internet Explorer中的错误

来自分类Dev

Internet Explorer中的定位问题

来自分类Dev

Selenium:Internet Explorer中的NoSuchElementException

来自分类Dev

Internet Explorer中的LeafletJS 0.8

来自分类Dev

Internet Explorer中的动画口吃

来自分类Dev

单击Internet Explorer中的链接

来自分类Dev

Internet Explorer中的Highchart导出

来自分类Dev

Internet Explorer 中的问题,定位?

来自分类Dev

Internet Explorer将发布请求转换为获取请求

来自分类Dev

防止Internet Explorer(IE)中Angular2 http请求缓存的正确方法

来自分类Dev

Internet Explorer 11 does not add the Origin header on a CORS request?

来自分类Dev

使用JQuery在Internet Explorer中进行CORS身份验证

来自分类Dev

Internet Explorer删除会话

来自分类Dev

Internet Explorer 10闯入

来自分类Dev

Internet Explorer与Chrome缓存

来自分类Dev

Internet Explorer跳动滚动