.net 如果凭证不适用于POST,则将

.net 如果凭证不适用于POST,则将,.net,angular,cors,httpclient,.net,Angular,Cors,Httpclient,我在一个有角度的网站上工作: •本地主机上的.Net Framework服务器/测试 •本地主机上的客户端:4200 我的cookie身份验证工作正常,我的GET请求工作正常 this.httpClient.get<Test>('dummyUrl', { withCredentials: true }); 我从这得到了一个401授权 我的调查 我看到的请求方法是OPTIONS,它告诉我这在飞行前是失败的,这个问题与CORS有关,而不是角度。我一直无法弄清楚我错过了什么 如果

我在一个有角度的网站上工作:

•本地主机上的.Net Framework服务器/测试

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

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

   this.httpClient.get<Test>('dummyUrl', { withCredentials: true });
我从这得到了一个401授权


我的调查

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


如果有任何指导,我将不胜感激。

请尝试以下代码

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);

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

在我的Spring Boot服务器的代码中,它处理CORS,我将
Access Control Allow Origin
头设置为
*
。我将
*
更改为
http://localhost:4200
,我的Angular应用程序的服务地点


从那以后一切都很顺利。希望这对别人有帮助

如果您在前端带有angular的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
        });
app.UseCors(选项=>
{
options.SetIsOriginAllowed(origin=>true);
//options.AllowAnyOrigin();
options.AllowAnyHeader();
options.AllowAnyMethod();

options.AllowCredentials();谢谢你的回答。RequestOptions已被弃用,因此我觉得我应该避免使用它。为了调试,我还是尝试了它,得到了相同的401行为。如果你能够解决问题,我将面临完全相同的问题
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);
        app.UseCors(options =>
        {
            options.SetIsOriginAllowed(origin => true);
            //options.AllowAnyOrigin();
            options.AllowAnyHeader();
            options.AllowAnyMethod();
            options.AllowCredentials();   <-- This one is important
        });