.net - 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 有关。我一直无法弄清楚我错过了什么。
我将不胜感激任何指导。
解决方案
如果您在前端使用带有角度的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
});
它应该可以工作。
推荐阅读
- pyqt - 如何让串行在后台和前台工作良好?
- vhdl - 如何在 VHDL 中找到传入正弦信号(模拟)的幅度和频率
- javascript - 在 Config 中注入变量
- java - 是否可以使用 geotools 编写具有自定义属性定义的形状文件?
- python - Django 跨联合过滤器多对多关系
- html - HTML/VBA 下拉菜单并下载数据
- php - 如果 post id 为空或在 codeigniter 中不存在,如何重定向博客主页
- python-3.x - 将 if 和 else 应用于数据框是否为空 pandas 的条件
- load-balancing - Flink 设置:将 Web UI 放在路径下
- angular - iPhone 11 Pro Max 上的问题屏幕离子应用程序