Microsoft Edge阻止了发送到同一专用网络CIDR中的IP的跨域请求

时间:2015-09-15 08:40:53

标签: javascript ajax xmlhttprequest cors microsoft-edge

$.ajax({
    url: "http://10.13.22.150/req_path",
    success: function(result){
        console.log(result);
    }
});

我想将跨域XMLHttpRequest发送到专用网络中的IP地址。 但是,开发人员工具控制台中显示以下错误:

  

SCRIPT7002:XMLHttpRequest:网络错误0x2efd,由于错误00002efd无法完成操作。

根据Wireshark的说法,数据包不是从客户端发送的。我猜这个请求被Microsoft Edge阻止了 此外,我发现只有当XMLHttpRequest和Edge客户端的URL位于专用网络的同一CIDR中时才会阻止请求。

Client IP             Request URL            Result
192.168.x.x  send to  192.168.x.x   ->>>>>   X
10.13.x.x    send to  10.13.x.x     ->>>>>   X
10.13.x.x    send to  192.168.x.x   ->>>>>   O

IE11 / Chrome / Firefox等其他浏览器工作正常。此情况仅在Microsoft Edge中显示。 有关此问题的解决方法或解决方案吗?

1 个答案:

答案 0 :(得分:7)

来自Understanding Enhanced Protected Mode

  

专用网络资源

     

由于EPM未声明privateNetworkClientServer功能,因此可以保护Intranet资源免受多种类型的跨区域攻击(通常称为“跨站点请求伪造(CSRF)”和“Intranet端口扫描”。)Internet页面无法构建Intranet页面,从中加载图像或资源,向它们发送CORS XHR请求等。

以上所有内容似乎都适用于MS Edge。 Edge缺少的唯一内容(至少在此时,v20.10240)是安全区域设置。

我的问题不在于XMLHttpRequest,而在于尝试在互联网页面内的iframe中加载内部网页。解决方法涉及查找我的网络设置 - 请参阅https://stackoverflow.com/a/32828629