如你所知这样做的跨域XMLHTTP请求是不允许出于安全原因,在互联网浏览器。

我有一个网页浏览器控制和我用的 DocumentText 而不是的 Navigate 以一个网址。由于当前域是 about:blank 当页试图做的请求本身或其他领域我 Access is denied Javascript错误。

甚至当我用 Navigate 如果Javascript做一请求的另一个领域,它不会的工作。

我怎么可以围绕这个吗?

这HTML码应该与网页浏览器控制:

<body>

<a href="javascript:getit('http://www.google.com')">this should work</a>
<div id="x"></div>

</body>

<script>
function XHConn()
{
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}

function getit(url){
    var xmlhttp = new XHConn();
    var fnWhenDone = function (oXML) { document.getElementById('x').innerHTML = oXML.responseText; alert(oXML.responseText); };
    xmlhttp.connect(url, "GET", "", fnWhenDone);
}

</script>
有帮助吗?

解决方案

我发现一个肮脏的解决方法、负载一个当地HTML(c: emp emp.html),然后修改的内容通过javascript。

这一点后,没有更多的制跨域限制,但是使用的文件。写造成其他令人讨厌的问题,例如JQuery .ready 功能不会的工作。

其他提示

检查此,它的工作对我来说就像一个魅力。http://support.microsoft.com/default.aspx?scid=kb;en-us;246227

我不明白在这域没有访问的Javascript...你有没有尝试过使用 脚本 标记,以获得的数据,你想从一个不同的领域?你可以使用 成语名字空间数据...

var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = "anotherdomain.com/data?callback=myFunction";
head.appendChild(script);

然后在"数据":

myFunction({
    // data here
});

URLACTION交域的数据似乎是正确的方向:读这个给找出为什么

只有这样,才能做到这是为了确保你的代码运行在信任区域(或更高等的HTA).默认情况下,任何内部运行的网页浏览器控制运行中的区域文件,这些文件正在提供服务。(即该标准,即安全政策正在使用。)

要改变这种行为,则需要更改的应用程序托管的网页浏览器控制和执行几个接口,网页浏览器的控制。(IInternetHostSecurityManager,IInternetZoneManager和IInternetSecurityMgrSite是那些你应该看一看。) 这不是一个简单的任务和有关文件,这是稀缺的。

一旦这样做,你的代码可以运行的任何特权你需要的,而跨领域的请求只是作为容易,因为重Mime-扫高的分数。

希望这会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top