Jquery IE XdomainRequest CORS问题

Jquery IE XdomainRequest CORS问题,jquery,internet-explorer,cors,xdomainrequest,Jquery,Internet Explorer,Cors,Xdomainrequest,我在IE上遇到了一个问题(只有IE8+,Chrome可以正常工作),当我试图将信息发布到我网站的另一个页面时,我收到一个错误,上面写着“Originhttp://localhost:7230在“访问控制允许原点标题”中找不到。我知道这在某种程度上与CORS有关,但我不会走出我的领域 发送请求的页面是:http://localhost:7230/TestPage.aspx 我试图发布到http://localhost:7230/ActionHandler.aspx 要发布到页面的代码: funct

我在IE上遇到了一个问题(只有IE8+,Chrome可以正常工作),当我试图将信息发布到我网站的另一个页面时,我收到一个错误,上面写着“Origin
http://localhost:7230
在“访问控制允许原点标题”中找不到。我知道这在某种程度上与CORS有关,但我不会走出我的领域

发送请求的页面是:
http://localhost:7230/TestPage.aspx

我试图发布到
http://localhost:7230/ActionHandler.aspx

要发布到页面的代码:

function RequestData()
   {
      //If we have no data don't request anything, just reset the timer
      if (dataStore.topReadings.length == 0 && dataStore.specifiedRanges.length == 0 && dataStore.entireRanges.length == 0 && dataStore.periodRanges.length == 0)
      {
         setInterval(RequestData, options.interval);
      }

      var params = "?Action=GET_DATA";
      var body = GetRequestXML();

      var xmlhttp;

      if (window.XDomainRequest) // code for IE8 and IE9
      {
         xmlhttp = new XDomainRequest();
         if (xmlhttp)
         {
            xmlhttp.onerror = function ()
            {
               alert("[Data Config]Failed to send request for configuration!\n" + xmlhttp.responseText);
            };
            xmlhttp.ontimeout = function ()
            {
               alert('xdr ontimeout');
            };
            xmlhttp.onprogress = function ()
            {
            };
            xmlhttp.onload = function ()
            {
               if (xmlhttp.responseText)
               {
                  HandleResponseData($($.parseXML(xmlhttp.responseText)));
               }
            };

         } else
         {
            alert('failed to create xdr');
         }
      }
      else
      {
         if (window.XMLHttpRequest) // code for IE7, Firefox, Chrome, Opera, Safari
         {
            try
            {
               xmlhttp = new XMLHttpRequest();
            }
            catch (e)
            {
               alert("[Data Request]Failed to create XMLHTTPRequest!\n" + e.message);
            }
         }
         else       // code for IE6, IE5
         {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         }

         xmlhttp.onreadystatechange = function ()
         {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
               //alert("Handled!");
               HandleResponseData($($.parseXML(xmlhttp.responseText)));
               that.trigger("dataReceived");
            }
         }
      }

      try
      {
         xmlhttp.timeout = options.timeout;
         xmlhttp.open("POST", "http://localhost:7230/ActionHandler.aspx" + params, true);
      }
      catch (e)
      {
         alert("[Data Request]Failed to open XMLHTTPRequest!\n" + e.message);
      }

      setTimeout(function () { xmlhttp.send(body); }, 0);
   }

这是一个在visual studio中运行的ASP.NET网站。我已经按照步骤将相关行添加到web.config文件中。对于如何将我的请求传递到ActionHandler页面的任何帮助,我们将不胜感激。

通常,如果您从一个域发布到另一个域,或者如果您从
http
源发布到
https
端点,即使在同一域上,您也会看到这一点

你试过设置这个标题吗

Access-Control-Allow-Origin", "*"

显然,使用
*
有点过于宽泛,您可能希望缩小范围,但看看这是否解决了您的问题

通常,如果您从一个域发布到另一个域,或者从
http
源发布到
https
端点,即使在同一个域上,您也会看到这一点

你试过设置这个标题吗

Access-Control-Allow-Origin", "*"

显然,使用
*
有点过于宽泛,您可能希望缩小范围,但看看这是否解决了您的问题

这是有道理的,但据我所知,我没有发布到不同的域,也没有通过不同的协议发布。我很确定我已经定好了。如果您阅读了我的问题的最后几行,我按照一个指南解释了如何添加该标题,但它似乎没有帮助。FWIW,如果您尝试使用XDR从http->https或从http->https转到IE,IE将立即失败,而不会显示有问题的错误消息。这是有道理的,但据我所知,我没有发布到不同的域,也没有通过不同的协议发布。我很确定我已经定好了。如果您阅读了我的问题的最后几行,我按照一个指南解释了如何添加该标题,但它似乎没有帮助。FWIW,如果您尝试使用XDR从http->https或从http->https转到IE,IE将立即失败,而不会显示有问题的错误消息。如果您使用Fiddler或F12的“网络”选项卡查看网络流量,是否会发送帖子,以及回复上是否有
访问控制允许来源
标题?除非您尝试跨域,否则不应使用XDomainRequest;该对象有几个bug,包括如果用户在InPrivate模式下运行,在IE8中完全失败。如果您最终需要跨域,那么您的代码在IE10中更喜欢XDomainRequest而不是CORS-XHR;也许不应该。谢谢你的信息,埃里克。响应确实具有
访问控制允许原点
标题。我很沮丧,尝试了
$.ajax()
调用,效果很好。我想我的问题是我使用了XDR,正如您所建议的那样。如果您使用Fiddler或F12的网络选项卡查看您的网络流量,是否发送了帖子,以及响应上是否有
访问控制允许来源
标题?除非您尝试跨域,否则不应该使用XDomainRequest;该对象有几个bug,包括如果用户在InPrivate模式下运行,在IE8中完全失败。如果您最终需要跨域,那么您的代码在IE10中更喜欢XDomainRequest而不是CORS-XHR;也许不应该。谢谢你的信息,埃里克。响应确实具有
访问控制允许原点
标题。我很沮丧,尝试了
$.ajax()
调用,效果很好。我想我的问题是我使用XDR,正如你所建议的