$.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中显示。 有关此问题的解决方法或解决方案吗?
答案 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