在C#WebAPI中,如何配置CORS以允许具有凭据和json内容的POST请求?

在C#WebAPI中,如何配置CORS以允许具有凭据和json内容的POST请求?,c#,asp.net-web-api,C#,Asp.net Web Api,我的WebAPI web.config中有以下标题: <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="https://localhost:44379" /> <add name="Access-Control-Allow-Methods" value="*" /> <add name="

我的WebAPI web.config中有以下标题:


  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="https://localhost:44379" />
      <add name="Access-Control-Allow-Methods" value="*" />
      <add name="Access-Control-Allow-Headers" value="X-Requested-With, content-type, Accept, Origin, Authorization, User-Agent, Referer" />
      <add name="Access-Control-Allow-Credentials" value="true" />
    </customHeaders>
  </httpProtocol>

“来自源”已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态

选项401(未经授权)


var headers=新的headers();
headers.append(“内容类型”、“应用程序/json”);
headers.append(“接受”、“应用程序/json”);
取回(“https:///Grouping/api/Grouping/GetGroupByProcessId", {
方法:“张贴”,
证书:“包括”,
标题:标题,
body:JSON.stringify({GroupingValue:GroupingValue})//GroupingValue只是一个JSON数组
})
.then(res=>res.json())
.then(数据=>console.log(数据))
检查控制台中的响应和请求头,我看到以下内容,我觉得一切都很好

我似乎不明白为什么我一直收到未经授权的消息。
我的GET请求通过得很好


建议您可以通过post发送JSON,但我有允许标题的标题,它仍然不起作用。请提供任何帮助!

打开文件App\u Start/WebApiConfig.cs。将以下代码添加到WebApiConfig.Register方法中:

公共静态类WebApiConfig
{
公共静态无效寄存器(HttpConfiguration配置)
{
//新代码
config.EnableCors();
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
}
}
接下来,将[EnableCors]属性添加到TestController类:

使用System.Net.Http;
使用System.Web.Http;
使用System.Web.Http.Cors;
命名空间WebService.Controllers
{
[使能CORS(来源:http://host-name.com,标题:“*”,方法:“*”]
公共类TestController:ApicController
{
//控制器方法未显示。。。
}
}

请参见
WebApiConfig.cs
文件中的
Register
方法下,添加以下内容:
EnableCorsAttribute cors=new EnableCorsAttribute(“http://localhost:44379“,”*“,“获取,发布”);config.EnableCors(cors);

var headers = new Headers();

            headers.append("Content-Type", "application/json");
            headers.append("Accept", "application/json");

            fetch("https://<host-name>/Grouping/api/Grouping/GetGroupByProcessId", {
                method: "POST",
                 credentials: "include",
                headers: headers,
                body: JSON.stringify({ GroupingValue: groupingValue }) //groupingValue is just a JSON array
            })
                .then(res => res.json())
                .then(data => console.log(data))