在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
)]
但我仍然得到错误:"' Access-Control-Allow-Origin'标头包含多个值。"
我还需要做些什么来防止这种情况发生?我们必须允许来自所有三个域。但前两个是最后一个的子域。
答案 0 :(得分:2)
您是否在cors的web.config文件中设置了任何选项?即<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开始。希望有所帮助。