从 angular2 访问 web-api 时没有 'Access-Control-Allow-Origin' 错误

No 'Access-Control-Allow-Origin' error when accessing web-api from angular2

一方面,我有一个 ASP.net 网络应用程序,其中包含一个网络 api 模块。 在同一台机器上,我有一个 angular 2 客户端应用程序,它正在使用 Web api 控制器 crud 方法。 angular 2 使用带有本地主机 uri 的基本 http 服务以及 Web api 运行 所在的端口号。我 运行 Web api 应用程序,当 angular 2 尝试使用 Get 请求时,我收到此错误消息(22770 是 web-api 的端口,4200 是angular 2 应用程序的端口):

Failed to load http://localhost:22770/api/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

虽然这是一个很常见的问题,但我的问题有点不同: CORS 定义为: Cross-Origin 资源共享 (CORS) 是一种使用 额外的 HTTP headers 让用户代理获得访问权限 从不同来源(域)的服务器中选择的资源 当前使用的网站

但是 - 我正在使用同一个域 - 在我的本地计算机 (localhost) 上。

问题是什么,我该如何解决?

您需要在您的网站中启用 CORS(跨源请求)api。按照下面页面中给出的说明进行操作

https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

好的 - 稍微调查了一下,找到了在同一本地主机上工作时出现该错误消息的原因 - 不同的端口似乎被视为不同的域。 我注意到的特殊补充: "Internet Explorer does not consider the port when comparing origins"