4

我正在一个 Angular 网站上工作:

• .Net Framework 服务器在 localhost/test

• 本地主机上的客户端:4200

我的 cookie 身份验证工作正常,我的 GET 请求工作正常。

   this.httpClient.get<Test>('dummyUrl', { withCredentials: true });

在我的服务器的 web.config 中,我有以下内容。

    <add name="Access-Control-Allow-Credentials" value="true"/>
    <add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
    <add name="Access-Control-Allow-Methods" value="*" />

鉴于此设置,我希望 PUT 和 POST 请求同样适用。

    this.httpClient.put('dummyUrl', this.payload, { withCredentials: true });

我从中得到 401 Unauthorized 。


我的调查

我看到的请求方法是 OPTIONS,它告诉我这在飞行前失败了,并且这个问题与 CORS 而不是 Angular 有关。我一直无法弄清楚我错过了什么。

我将不胜感激任何指导。

4

3 回答 3

2

如果您在前端使用带有角度的asp net core api,那么在web api中,启动设置(在配置方法下),

设置以下设置

        app.UseCors(options =>
        {
            options.SetIsOriginAllowed(origin => true);
            //options.AllowAnyOrigin();
            options.AllowAnyHeader();
            options.AllowAnyMethod();
            options.AllowCredentials();   <-- This one is important
        });

它应该可以工作。

于 2020-11-04T16:18:01.777 回答
1

试试下面的代码。

import { RequestOptions, Headers } from '@angular/http';

let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers, withCredentials: true });

this.httpClient.put('dummyUrl', this.payload, options);
于 2018-05-02T09:09:11.350 回答
0

{withCredentials: true}即使在我的 POST 请求中,我也遇到了类似的问题。

在处理 CORS 的 Spring Boot 服务器代码中,我将Access-Control-Allow-Origin标头设置为*. 我更改*http://localhost:4200,我的 Angular 应用程序是从那里提供服务的。

在那之后一切都很好。希望这可以帮助某人。

于 2020-04-15T21:12:16.010 回答