gpt4 book ai didi

c# - 带有发布请求的 Angular 6 header 不起作用

转载 作者:行者123 更新时间:2023-11-30 21:31:29 25 4
gpt4 key购买 nike

我的前端使用 Angular 6,服务器使用基于 Core2 的 Web API。我编写了这段代码,并且在我使用 ASP.NET 客户端时有效,但是对于 Angular,我遇到了一些麻烦。

enter image description here

services.AddMvc():
services.AddCors(o => o.AddPolicy("FreePolicy", builder =>
{
builder.WithHeaders(<redacted>)
//builder.AllowAnyHeader()
.AllowCredentials()
.AllowAnyMethod()
.AllowAnyOrigin();
}));

如果我注释 builder.WithHeaders 并取消注释 builder.AllowAnyHeader,错误就会消失,否则 Angular 会崩溃。

我的标题:

enter image description here

这看起来像是我出错的地方,因为“MaybeUnknown”。您可以在值周围看到括号,所以这看起来像一个数组。我可以修复它吗?它能解决我的问题吗?

如果我不取消注释 builder.AllowAnyHeader,我在服务器上发出发布请求后会收到错误。

enter image description here

更新

我在服务器端的标题

enter image description here

客户端上的 MY header enter image description here

更新 2配置方法 enter image description here

更新 3 enter image description here

最佳答案

从您发布的最新屏幕截图(显示通过 Chrome 发出的 HTTP 请求)可以清楚地看出,您的 WithHeaders 调用中缺少 header 。如果您查看请求中的 Access-Control-Request-Headers,您会看到它包含四个 header :

  • 经验
  • 客户编号
  • zump-api-version
  • 内容类型

但是,您的 WithHeaders 调用包括Content-Type,因此您需要添加:

builder.WithHeaders("client-id", "zump-api-version", "apiss", "content-type")
...

注意:这都是不区分大小写的,因此您可以按照自己喜欢的方式进行大小写。

MDN 文档中有关于此的更多信息:Access-Control-Allow-Headers ,其中包括以下解释:

Note that certain headers are always allowed: Accept, Accept-Language, Content-Language, Content-Type (but only with a MIME type of its parsed value (ignoring parameters) of either application/x-www-form-urlencoded, multipart/form-data, or text/plain). These are called the simple headers, and you don't need to specify them explicitly.

这解释了为什么您不必指定 Accept(这是一个“简单 header ”)。您确实必须在您的示例中指定Content-Type,因为它不是上面语句中引用的三种 MIME 类型。

关于c# - 带有发布请求的 Angular 6 header 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com