从 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。按照下面页面中给出的说明进行操作
好的 - 稍微调查了一下,找到了在同一本地主机上工作时出现该错误消息的原因 - 不同的端口似乎被视为不同的域。
我注意到的特殊补充:
"Internet Explorer does not consider the port when comparing origins"
一方面,我有一个 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。按照下面页面中给出的说明进行操作
好的 - 稍微调查了一下,找到了在同一本地主机上工作时出现该错误消息的原因 - 不同的端口似乎被视为不同的域。 我注意到的特殊补充: "Internet Explorer does not consider the port when comparing origins"