从angular2

时间:2018-02-07 22:09:25

标签: asp.net-web-api cors angular2-services accesscontrolexception

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

  

无法加载http://localhost:22770/api/:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:4200”访问。

虽然这是一个非常常见的问题,但我的有点不同: CORS定义为: 跨源资源共享(CORS)是一种使用的机制 额外的HTTP标头,以允许用户代理获得访问权限 从不同来源(域)的服务器中选择的资源 目前正在使用的网站

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

问题是什么,如何解决?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

确定 - 稍微调查一下并在同一本地主机上工作时找到该错误消息的原因 - 看起来不同的端口被视为不同的域。 特别添加我注意到: “比较起源时,Internet Explorer不考虑端口”