Asp.net 当我从邮递员那里打电话的时候,我可以在没有授权的情况下访问数据,但为什么不使用angular 2应用程序呢

Asp.net 当我从邮递员那里打电话的时候,我可以在没有授权的情况下访问数据,但为什么不使用angular 2应用程序呢,asp.net,angular,Asp.net,Angular,我正在使用ASP.NETWebAPI。当我在创建WebAPI项目时选择no authentication时,相同的代码可以工作,但当我使用单独的身份验证时,即使尝试了所有可能的技巧,它也会抛出401错误。请帮助我处理ASP中可用的不同身份验证模式。Net项目创建。即使在MSDN上,我也没有找到任何关于个人身份验证的适当文档。 还建议我向web API发送令牌或凭据的推荐方式 下面编写的代码是Angular 2服务的代码GetOneItemDetailsCalClient正在工作,但GetOneI

我正在使用ASP.NETWebAPI。当我在创建WebAPI项目时选择no authentication时,相同的代码可以工作,但当我使用单独的身份验证时,即使尝试了所有可能的技巧,它也会抛出401错误。请帮助我处理ASP中可用的不同身份验证模式。Net项目创建。即使在MSDN上,我也没有找到任何关于个人身份验证的适当文档。 还建议我向web API发送令牌或凭据的推荐方式

下面编写的代码是Angular 2服务的代码
GetOneItemDetailsCalClient
正在工作,但
GetOneItemDetailsCal

getOneItemDetailsCall():Observable<any>{
return this.http.get('http://localhost:56265/api/ProductDetail').map((response:Response)=>response.json());
}



getOneItemDetailsCallClient():Observable<any[]>{
    return this.http.get('https://my-json-server.typicode.com/typicode/demo/posts').map((response:Response)=><OneItemComponent[]>response.json());
  }

您正在从不同于承载api的域访问api,因此它会阻止您的请求。添加跨源请求(COR)应该可以解决您的问题。这里是一个链接

在Startup.cs中,您应该能够调用:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
}
但可能需要将Angular host应用程序指定为原点:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory)
{

    // Shows UseCors with CorsPolicyBuilder.
    app.UseCors(builder =>
       builder.WithOrigins("http://localhost:4200"));

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Hello World!");
    });
}

后端的一些代码会很好。来自ProductDetail方法。后端是一个非常简单的代码,带有一个控制器和一些方法,如get、put、post等。我正在尝试调用get方法,我可以从浏览器或postman两者访问它。公共类ProductDetailController:ApiController{public string GetProductDetails(){string query=“从产品详细信息中选择*”;产品详细信息pd=新产品详细信息();返回pd.getProduct(查询);}我已经在web.config中编写了CORS代码,我已经在web.config文件*symb中添加了CORS的代码上面没有显示ol。实际上它是像value=“*”一样编写的。使用完全相同的代码,我可以从我的angular应用程序调用get方法。唯一的区别是我在创建项目时选择了“无身份验证”而不是“个人用户帐户”选项
public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory)
{

    // Shows UseCors with CorsPolicyBuilder.
    app.UseCors(builder =>
       builder.WithOrigins("http://localhost:4200"));

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Hello World!");
    });
}