在Visual Studio中使用Microsoft Edge调试Web应用的问题求助
问题排查与解决办法
一、CORS报错相关问题解决
问题原因说明
- 生产环境无报错的原因:生产环境前端站点和API接口大概率是同域名同端口部署,不存在跨域场景,不会触发浏览器CORS校验;IE浏览器对localhost场景的跨域请求默认放行,而Chromium内核的Edge有严格的跨域校验规则,因此仅Edge报错。
- 替换端口后仍报错的原因:请求头里的
Origin值是你当前打开的前端站点的地址,不是API的请求地址。你只修改了API请求的目标端口为57113,但是前端站点本身的启动端口仍然是55798,跨域场景依旧存在,因此报错不变。 - IIS配置修改无效的原因:CORS响应头需要由提供API服务的57113端口站点返回,你将配置加在前端站点的IIS配置里完全不生效。
解决办法
三个方案可选,优先选方案1:
- 统一前后端端口(最省事)
右键MVC项目 -> 选择「属性」-> 切换到「Web」选项卡 -> 找到「服务器」配置区域,将「项目URL」的端口从55798修改为57113,保存配置后重启VS调试即可,跨域场景直接消失。 - 后端配置CORS规则
如果需要前后端分离端口运行,在API项目中添加CORS配置即可:
- 用NuGet安装
Microsoft.AspNet.WebApi.Cors包 - 打开
App_Start/WebApiConfig.cs,在注册方法第一行添加代码:
config.EnableCors();
- 在对应的API Controller上添加特性:
[EnableCors(origins: "http://localhost:55798", headers: "*", methods: "*")]
- 临时禁用Edge CORS校验(仅调试用)
右键Edge快捷方式 -> 选择「属性」-> 在「目标」输入框的原有内容末尾追加参数:
--disable-web-security --user-data-dir="C:\EdgeDebugTemp"
用该快捷方式打开Edge调试即可跳过CORS校验,不要用该模式访问常规网站。
二、JS断点不生效问题解决
VS2013发布时Chromium版Edge还未推出,调试器默认不支持对Chromium内核浏览器的JS断点映射,解决方法两个:
- 直接用Edge自带的开发者工具调试:打开F12 -> 切换到「Sources」面板 -> 找到对应的
controller.js文件直接打端点即可。 - 确认VS Debug配置:检查
web.config中compilation节点的debug属性是否为true,如果为falseJS会被打包压缩,导致VS无法加载符号,修改为true重启调试即可。
三、关于jQuery版本升级的说明
完全不需要升级。当前CORS问题是浏览器安全策略限制导致,和发起请求的jQuery版本无关,jQuery 2.0.3完全支持正常的跨域请求,盲目升级反而可能引入老项目的兼容性问题。
内容的提问来源于stack exchange,提问作者user2073183
相关产品推荐
相关产品推荐

