在 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");
});
});
如果我的 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");
});
});