Suporte a CORS para PUT e DELETE com o ASP.NET Web API

Eu estou trabalhando com a versão final do ASP.NET Web API para implementar uma API amigável para JavaScript. Por vários tutoriais, eu habilitei o CORS no meu web.config:

        

Com o acima, as solicitações GET e POST entre domínios funcionam bem, mas as solicitações PUT e DELETE falham.

No Chrome:

O método PUT não é permitido pelo Access-Control-Allow-Methods.

O método DELETE não é permitido pelo Access-Control-Allow-Methods.

Existe alguma coisa adicional necessária para obter verbos PUT e DELETE funcionando entre domínios?

Parece que foi adicionado outro header personalizado:

          

Além disso, além da resposta de Nathan, certifique-se de ter desabilitado o módulo IIS do WebDAV e definir a configuração runAllManagedModulesForAllRequests="true" no web.config:

         

Sem isso, as solicitações de CORS de comprovação (que são usadas para os methods PUT, DELETE e para enviar solicitações adicionais de OPTIONS) não funcionarão.

Solução muito simples para superar o problema de CORS no WEBAPI2.2.

Adicione o seguinte em seu arquivo de configuração do WebApi.

 var cors = new EnableCorsAttribute("*", "*", "*"); Config.EnableCors(cors); 

Antes de adicionar isso, certifique-se de remover o header personalizado no arquivo Web.config.

      

Se você tiver tanto o header personalizado quanto o CORS ativado no WebApiconfig, você enfrentará o erro cors.

Adicione os cors ativados na configuração do WebApi para resolver o problema.

Por favor, use isso em web.config enquanto você implementou seu aplicativo, não use em web.config local