Javascript 如何在浏览器中以编程方式跨域启用数据源。?

Javascript 如何在浏览器中以编程方式跨域启用数据源。?,javascript,ajax,internet-explorer,browser,Javascript,Ajax,Internet Explorer,Browser,我在脚本中使用了$.ajax()函数,该函数从其他域调用web服务。但我在IE中遇到了错误。在做了研究之后,我知道错误是由于Internet Explorer默认将“跨域访问数据源”设置为“提示”。如何使用脚本将其设置为“启用” 代码: 浏览器中出现此错误 我得到SEC7120:原点http://localhost:8080 在Access Control Allow Origin标头和SCRIPT7002中找不到:XMLHttpRequest:网络错误0x80070005,访问被拒绝Micro

我在脚本中使用了
$.ajax()
函数,该函数从其他域调用web服务。但我在IE中遇到了错误。在做了研究之后,我知道错误是由于Internet Explorer默认将“跨域访问数据源”设置为“提示”。如何使用脚本将其设置为“启用”

代码:

浏览器中出现此错误


我得到
SEC7120:原点http://localhost:8080 在Access Control Allow Origin标头和SCRIPT7002中找不到:XMLHttpRequest:网络错误0x80070005,访问被拒绝

Microsoft已在Internet Explorer中为跨域AJAX请求创建了自己的解决方案,称为XDomainRequest

jQuery有一个插件支持这一点:


您只需在包含jQuery之后再包含此脚本,它就可以工作。

这仅适用于IE8和IE9。他们在那里的网站上提到过。我只是在解析从其他域收到的XML。是的,我知道,但您没有提到您使用的IE版本。IE10及以上实际上不需要这种解决方法。你在测试哪个IE版本?我们的网站应该可以在所有IE浏览器中运行。目前我正在使用IE10。我更新了问题。哦,我明白了。尝试以下操作:在服务器响应标题中添加:Access Control Allow Origin:*由于无法使用JavaScript覆盖客户端的安全设置,因此我只能想到这一点。对不起的:(.另一种解决方案是在您自己的服务器上创建一个web服务,从另一台服务器调用web服务并返回结果。比如说,您的站点运行在mydomain.com上,而不是通过mydomain.com/webservice/showbills?billID=12458调用服务,然后从other-domain.com和返回结果。
var serviceURL = "https://www.other-domain.com/webservice/showbills?billID=12458";

if ($.browser.msie && window.XDomainRequest) {

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
       if (xhr.readyState == 4) {
      var data = xhr.responseText;                                  
          var xmlDoc = $.parseXML(data); // then parse into xml
          var xml = $(xmlDoc); // create doc
          console.log(xml);
          // show bill here in table.
       }
    }
 xhr.open('POST', serviceURL, true);
 xhr.send();

} else {

    $.ajax({
        type: "POST",
        url: serviceURL,
        dataType: "text",
        crossOrigin: true,
        crossDomain: true,
        success: function (data) {
           var xmlDoc = $.parseXML(data); // then parse into xml
           var xml = $(xmlDoc);// create doc
           console.log(xml);
        // show bill here in table.
        }
   });
}