在 Angular 13 中设置 HTTP Headers 似乎无法正常工作

Setting HTTP Headers in Angular 13 does not seem to work right

如果我的 header 设置成这样,那么我会从 API 返回 415,因为 HTTP 请求是用 content-type text/plain 发送的

let headers: HttpHeaders = new HttpHeaders();

如果我将代码放在下面,那么它会以某种方式弄乱 Origin header,因为在解决此问题之前我已经解决了 CORS 违规问题。

if (!headers.has('content-type')) {
    headers = headers.append('content-type', 'application/json')
}
else{
    headers = headers.set('content-type', 'application/json')
}

我发现的所有内容都让我觉得 header 设置正确,但我无法解释为什么我 运行 陷入这些问题。

有什么想法吗?

Package.json 依赖关系:

    "@angular/animations": "~13.0.0",
    "@angular/common": "~13.0.0",
    "@angular/compiler": "~13.0.0",
    "@angular/core": "~13.0.0",
    "@angular/forms": "~13.0.0",
    "@angular/platform-browser": "~13.0.0",
    "@angular/platform-browser-dynamic": "~13.0.0",
    "@angular/router": "~13.0.0",
    "bootstrap": "^5.1.3",
    "jquery": "^3.6.0",
    "popper": "^1.0.1",
    "rxjs": "~7.4.0",
    "tslib": "^2.3.0",
    "zone.js": "~0.11.4"
  },

我最终需要调整我的 API 以允许 Content-Type headers 在 pre-flight 调用中。

            services.AddCors(options =>
            {
            options.AddPolicy(name: MyAllowSpecificOrigins,
                builder =>
                {
                    builder.WithOrigins(Configuration.GetValue<string>("smWebUrl"));
                    builder.WithHeaders("Content-Type");
                });
            });