gpt4 book ai didi

c# - 为什么 [EnableCors ("*"、 "*"、 "*")] 不允许所有请求?

转载 作者:行者123 更新时间:2023-12-02 15:38:05 27 4
gpt4 key购买 nike

我们用 [EnableCors('*', '*', '*')] attribute 装饰了一个公共(public) Web API Controller 。 .

我的期望是,对于该 Web API Controller 类中包含的端点,CORS 是完全允许的,并且不受任何方式的限制。然而,我看到了对 Chrome 预检 OPTIONS 的响应请求仅包含以下 CORS 相关 header :

Access-Control-Allow-Headers: access-control-allow-headers,access-control-allow-methods,access-control-allow-origin
Access-Control-Allow-Origin: *

因此,实际的 POST我从 Chrome 中发送的请求(通过 $.ajax )失败,并在控制台中记录以下消息:

Access to XMLHttpRequest at 'https://...' from origin 'https://...' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我是否误解了 EnableCors 的含义属性,或者我应该寻找任何可能覆盖我在 Controller 类的所述属性中设置的全局设置?

<小时/>

编辑:根据到目前为止的答案,以下是我尝试过的更多内容:

  • MDN 中所述,起源*如果凭证随调用一起发送,则无法使用。 Another MDN page更明确的是有一个 withCredentials不应设置为 true 的标志。现在,我设置了withCredentialsxhrFields配置对象的属性为 $.ajax false ,无论如何,我的请求不会发送任何 cookie 或 auth header 。然而,所描述的错误不断发生。
  • CORS 似乎已正确初始化,如 HttpConfiguration.EnableCors方法被调用。

最佳答案

您需要做两件事才能使该属性起作用 source documentation here

在 App_Start/WebApiConfig.cs 中。基本上,您在这里配置应用程序以启用 cors 配置。在任何路由配置之前完成这一点很重要。

使用 System.Web.Http;

namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// This is the key line
config.EnableCors();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}

然后

使用System.Net.Http;使用 System.Web.Http;使用 System.Web.Http.Cors;

namespace WebService.Controllers
{
[EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]
public class TestController : ApiController
{
// Controller methods not shown...
}
}

关于c# - 为什么 [EnableCors ("*"、 "*"、 "*")] 不允许所有请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59305365/

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