MVC Web API调试遇SCRIPT7002错误求助(Windows10+VS2017)
解决IE调试时MVC Web API跨域访问被拒绝(0x80070005)的问题
我之前也碰到过一模一样的场景——Windows 10 + VS2017开发带登录的MVC Web API,用IE调试就报SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied,明明配了CORS却没用。结合我的排查经验,给你几个针对性的修复方向:
1. 给CORS配置加上凭证支持(关键!)
因为你的API有登录功能,请求必然要携带凭证(比如会话Cookie),而IE对带凭证的跨域请求有严格要求:
- 先检查WebApiConfig里的CORS配置,必须开启
AllowCredentials = true:
// 注意:如果开了AllowCredentials,origins不能用*,要写具体的前端域名,比如http://localhost:5000 config.EnableCors(new EnableCorsAttribute("http://localhost:你的前端端口", "*", "*") { AllowCredentials = true });
- 然后前端AJAX请求里必须加上
withCredentials: true(以jQuery为例):
$.ajax({ url: "你的API接口地址", type: "GET", xhrFields: { withCredentials: true }, success: function(res) { // 处理响应 } });
这里踩过坑:如果
AllowCredentials设为true,Access-Control-Allow-Origin不能是通配符*,IE直接拒绝,必须指定具体的前端域名。
2. 调整IE的本地Intranet安全设置
IE默认的安全策略会阻止本地跨域请求,尤其是localhost调试场景:
- 打开IE,点右上角的工具 > Internet选项 > 安全
- 选中本地Intranet,点自定义级别
- 找到跨域访问数据源,改成启用
- 重启IE再试,大概率能解决一部分权限问题
3. 清理Web.config里的冲突配置
如果你同时在WebApiConfig和Web.config里配了CORS,很容易出冲突:
- 要么保留WebApiConfig的代码配置,删掉Web.config里的
<customHeaders>相关CORS配置; - 要么只在Web.config里配,确保头信息正确:
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="http://localhost:你的前端端口" /> <add name="Access-Control-Allow-Credentials" value="true" /> </customHeaders> </httpProtocol> </system.webServer>
别同时用两种方式配,IE对重复的头信息特别敏感。
4. 关掉IE的兼容性视图
IE的兼容性视图会强制用旧版渲染模式,CORS支持会出问题:
- 点工具 > 兼容性视图设置
- 取消勾选在兼容性视图中显示Intranet站点
- 确保localhost不在兼容性视图的站点列表里
5. 排查NTLM身份验证的冲突
如果你的API用了Windows身份验证(NTLM),IE跨域时会有权限问题:
- 可以先临时在Web.config里调整认证设置,测试是否是这个问题:
<system.web> <authentication mode="Forms" /> <authorization> <allow users="*" /> </authorization> </system.web>
- 或者根据你的登录逻辑,确保API的认证方式和前端凭证传递逻辑匹配。
内容的提问来源于stack exchange,提问作者Rhendar
相关产品推荐
相关产品推荐

