首页 > 解决方案 > Angular WithCredentials 不适用于 POST、PUT

问题描述

我正在一个 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 有关。我一直无法弄清楚我错过了什么。

我将不胜感激任何指导。

标签: .netangularcorshttpclient

解决方案


如果您在前端使用带有角度的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
        });

它应该可以工作。


推荐阅读