WebAPI上的Cors问题

本文关键字:问题 Cors 上的 WebAPI | 更新日期: 2023-09-27 18:27:10

在WebAPI 上启用Cors

我在WebApiConfig.cs 中有这个集合

config.EnableCors();

这就是我的控制器方法的属性设置方式:

[EnableCors("http://dev.example.com,http://personal.example.com,http://www.example.com", // Origin
                    "Accept, Origin, Content-Type, Options",                       // Request headers
                    "POST",                                                        // HTTP methods
                    PreflightMaxAge = 600                                          // Preflight cache duration
        )]

但我仍然得到错误:"‘访问控制允许来源’标题包含多个值。"

我还需要做些什么来防止这种情况发生?我们必须允许从所有三个领域。但是前两个是最后一个的子域。

WebAPI上的Cors问题

在您的web.config文件中为cors设置了任何选项吗?即类似<add name="Access-Control-Allow-Origin" value="*"/> 的东西

如果是,请确保删除它,并仅通过代码控制cors。

编辑:好吧,这意味着无论请求命中哪个控制器,都要将头添加到响应中,如果请求命中具有EnableCors属性的控制器,它将添加另一个头。如果删除了Application_BeginRequest()中的一个,它应该可以工作,但这意味着你需要用EnableCors属性装饰所有其他控制器,这在你的情况下可能是可以接受的,否则,你需要添加一个DelegateHandler,在那里你可以检查请求并根据请求的控制器设置cors。看看这个http://georgedurzi.com/implementing-cross-browser-cors-support-for-asp-net-web-api/它可能有助于从DelegateHandlers开始。希望能有所帮助。