【发布时间】:2021-12-30 15:04:50
【问题描述】:
我继承了一个使用 Angular 的 MVC 应用程序 (Visual Studio 2013),但在 Microsoft Edge 中查看该应用程序时该应用程序无法正常工作。
当浏览器设置为在 VS 中调试时使用 Microsoft Edge 时,我在主页加载时看到许多 toast 错误。我还发现了以下内容:
-
在任何“controller.js”文件中设置的任何断点都会导致“没有为此文档加载任何符号”。当浏览器设置为 IE 时,会触发断点。
-
在 Microsoft Edge 中查看开发人员工具的控制台时,我看到诸如“从源 'http://localhost:55798' 访问 'http://localhost:57113/api/todo' 的 XMLHttpRequest 已被被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。”这在 IE 中不会发生。
-
在 web.config 中,“LoginServiceName”值 http://localhost:55798/token 和“RemoteServiceName”值 http://localhost:55798/api 的设置。我在“55798”上搜索并在整个应用程序中将其替换为端口 57113,但仍然收到第 2 点的错误
-
已部署到测试服务器的站点显示相同的错误,但从 VS 部署到生产服务器的站点没有问题。
我已经阅读了一些关于 CORS 的帖子,但不确定为什么该站点在生产环境中运行,但没有测试,也没有在使用 Microsoft Edge 通过 VS 运行它时。我也不明白为什么在 web.config 文件中设置 55798 时使用端口 57113 以及为什么当 55798 更新为 57113 时它仍在寻找 55798。
当我在解决方案中搜索“XMLHttpRequest”时,我看到 jquery-2.0.3.js/min.js 中有对它的引用。是否需要使用最新的 jquery 文件?
我尝试添加
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
到我的 IISExpress 的 applicationhost.config 文件,但这并没有解决问题。
当我使用 Microsoft Edge 开发人员工具单步执行代码时,它点击 jquery-2.0.3.min.js 的第三行,完成,显示 toast 错误,然后代码进入 angular.js 文件。当我在开发人员工具中查看 Network > XHR 时,我看到请求 URL 是 http://localhost:57113/api/todo 并且在请求标头中:
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
Host: localhost:57113
Origin: http://localhost:55798
Referer: http://localhost:55798/
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Microsoft Edge";v="90"
sec-ch-ua-mobile: ?0
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51
有什么想法吗?
【问题讨论】:
-
从您有一个 controller.js 文件的事实来看,您可能正在查看 AngularJS,而不是 Angular,并且可能想要更新您的标签。另请注意,AngularJS 将于 2021 年 12 月 31 日终止支持docs.angularjs.org/misc/version-support-status
-
从您发布的请求标头中,您似乎使用的是已过时的 Edge 版本 90。我发现 a similar issue 与以前版本的 Edge 一起使用。它表明该问题已在较新版本的 Edge 中得到修复。您能否将您的 Edge 浏览器更新到最新版本 96 并再次测试?如果问题在最新版本的 Edge 中得到修复,请告诉我们测试结果。
-
我将 Microsoft Edge 升级到最新版本 96.0.1054.29,现在 CORS 错误已得到解决。我仍然遇到错误,但至少它现在与用户在我们的测试区域查看网站时看到的内容相匹配。谢谢!
标签: javascript jquery angularjs visual-studio-2013 microsoft-edge