我在浏览了stackoverlow.com中与此错误相关的许多帖子之后发布了这个问题,但我还没有找到任何解决方案。我通过以下代码从Angular 2访问ASP.net Web API。
http.get('http://10.224.30.152:57341/api/library').subscribe(result => {
this.library = result.json();
});
当我执行上面的代码时,我收到以下错误:
XMLHttpRequest无法加载http://10.224.30.152:57341/api/library。没有 '访问控制允许来源'标题出现在请求的上 资源。起源' http://localhost:4200'因此是不允许的 访问。响应的HTTP状态代码为400。
如果我将网址更改为' localhost' 而不是IP地址,则错误会消失,我会得到所需的结果。我想了解在ASP.net Web API方面出现了什么问题,当我使用IP地址访问API时,它抛出的XMLHttpRequest无法加载错误。以下是我在Web API方面所做的工作
在WebAPIConfig.cs
我在Register()
函数中添加了以下代码行:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
在我的控制器中,我有EnableCors
属性,如
[EnableCors("*", "*", "*")]
public class RolesController : ApiController
{
..... code ....
}
编辑(8月12日)
我观察到,如果我在IIS 7服务器上托管它,我不会收到此错误。如果我在IIS Express(Visual Studio F5运行)上测试它,我会收到此错误。但是,如果我在IIS 10(Windows 10专业版)上托管相同的Web API,我会收到相同的错误。所以我无法理解这个问题的原因。 Windows 10 IIS 10服务器中缺少什么导致此错误。错误消息也略有改变。它现在有预检'错误中的信息。
XMLHttpRequest无法加载http://172.26.50.17:8085/api/library。 对预检请求的响应未通过访问控制检查:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8080'因此不允许访问。响应的HTTP状态代码为500