对.NET Core API的Angular 6 Basic Auth发布请求

时间:2018-08-24 17:53:27

标签: angular api post .net-core angular6

已多次发布此问题,但我尝试了几种解决方案,但这些解决方案对我不起作用。我正在按角度制作API服务,该服务需要使用基本身份验证来获取用于其他端点的承载令牌。该API用.NET Core编写。

我的代码很简单:

private GetToken() {
    let delta = new Date().getTime() - this.tokenTimestamp.getTime();

    const options = {
        headers: new HttpHeaders({
            'Content-Type': 'application/json', 
            'Cache-Control': 'no-cache',
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token, content-type',
            'Authorization': 'Basic ' + btoa(this.user + ':' + this.pass)
        })
    };

    console.log(options);

    if (delta >= 60000) {
        this.http.post<Response>(this.url + '/api/Auth/Token/', { username: this.user, password: this.pass }, options)
        .subscribe(
        (val) => {
            console.log("POST call successful value returned in body", val);
        },
        response => {
            console.log("POST call in error", response);
        },
        () => {
            console.log("The POST observable is now completed.");
        });
    }
}

我在控制台中收到CORS错误(我认为): enter image description here

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

即使看起来存在CORS问题,该问题可能存在也可能不存在,但首先您需要解决404 Not Found错误。同样在我们的应用程序中,当未找到404错误时,即使CORS配置已完美设置,404错误通常也会伴随CORS错误出现。

要对此进行测试,请打开Postman。创建一个到localhost:50897 / api / Auth / Token /的POST请求,看看是否仍收到404。如果是,则需要确保端点正常。

编辑:

在Startup.cs中,确保在Configure(..){}

中有此设置
app.UseCors(builder => builder
                        .WithOrigins("http://localhost:4200", "url2") // url2 would be the IP address that your angular app is deployed under in IIS
                        .AllowCredentials()
                        .AllowAnyHeader()
                        .AllowAnyMethod());