C# 无法检索WebAPI数据
在VisualStudio中,我有两个应用程序。一个是Angular 2网站,另一个是WebApi项目。我在WebAPI方法中有一个断点,当Angular服务尝试检索数据但页面上没有显示任何内容时,该断点会被命中。打开浏览器控制台时出现以下错误:C# 无法检索WebAPI数据,c#,asp.net,asp.net-web-api,angular,C#,Asp.net,Asp.net Web Api,Angular,在VisualStudio中,我有两个应用程序。一个是Angular 2网站,另一个是WebApi项目。我在WebAPI方法中有一个断点,当Angular服务尝试检索数据但页面上没有显示任何内容时,该断点会被命中。打开浏览器控制台时出现以下错误: XMLHttpRequest cannot load http://localhost:58949/api/people. No 'Access-Control-Allow-Origin' header is present on the reques
XMLHttpRequest cannot load http://localhost:58949/api/people. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:62761' is therefore not allowed access.
解决这个问题的最佳方法是什么?我通过创建一个MVC应用程序来实现这一点,该应用程序同时托管WebAPI和angular应用程序,但我不喜欢这个解决方案 您必须在web api端启用CORS 我假设您使用的是WebApi核心。要在web api端启用CORS,您必须执行以下步骤- 首先,在project.json-“Microsoft.AspNetCore.Cors”中添加依赖项:“1.0.0” 然后像这样在startup.cs中启用CORS-
app.UseCors(builder => {
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
您可以在此处找到有关CORS的更多信息-
看看这是否有帮助。您必须在web api端启用CORS 我假设您使用的是WebApi核心。要在web api端启用CORS,您必须执行以下步骤- 首先,在project.json-“Microsoft.AspNetCore.Cors”中添加依赖项:“1.0.0” 然后像这样在startup.cs中启用CORS-
app.UseCors(builder => {
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
您可以在此处找到有关CORS的更多信息-
查看这是否有帮助。您面临的问题是浏览器默认不允许跨原点请求。正如您所说,您有两个网站,它们具有不同的URL,在您的情况下,很可能只是本地主机上的不同端口,但这仍然算作“不同”来源,是一种安全措施。您可以始终允许所有源或角度原点访问web api:
Access-Control-Allow-Origin: http://foo.com
Access-Control-Allow-Methods: GET, PUT, DELETE
ASP.NET有一个内置的包,可以为您这样做,所以您不需要样板文件。你可以阅读更多关于它的内容。基本上,它只会向您的web api响应添加一些标题,如上面的示例所示。您面临的问题是,默认情况下,浏览器不允许跨源请求。正如您所说,您有两个网站,它们具有不同的URL,在您的情况下,很可能只是本地主机上的不同端口,但这仍然算作“不同”来源,是一种安全措施。您可以始终允许所有源或角度原点访问web api:
Access-Control-Allow-Origin: http://foo.com
Access-Control-Allow-Methods: GET, PUT, DELETE
ASP.NET有一个内置的包,可以为您这样做,所以您不需要样板文件。你可以阅读更多关于它的内容。基本上,它只会向您的web api响应添加一些标题,如上面的示例所示。我在我的WepApi项目中使用它。它位于WebApiConfig.cs中
// Use NuGet to add this: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.Cors
config.EnableCors();
我在我的WepApi项目中使用它。它位于WebApiConfig.cs中
// Use NuGet to add this: http://www.nuget.org/packages/Microsoft.AspNet.WebApi.Cors
config.EnableCors();
谢谢执行此操作是否存在任何安全问题?如果要限制到特定的源代码,则可以这样做-`app.UseCors(builder=>builder.WithOrigins(“);`谢谢。执行此操作是否存在任何安全问题?如果要限制到特定的源代码,则可以这样做-`app.UseCors(builder=>builder.WithOrigins(“); `