Implementando CORS en ASP.NET Web API

Seguramente, los que leeis geeks ya estaréis al tanto de la salida de ASP.NET WebAPI para la siguiente versión de ASP.NET  MVC, de hecho, en esta misma comunidad, gente como Jose Maria Aguilar y Eduard Tomás ya han hecho unos cuentos posts interesantísimos sobre el tema, no dejéis pasar la oportunidad de leerlos y aprender de ellos, os lo recomiendo encarecidamente, si me lo permitís. A mi en este post, me gustaría tratar un tema importante cuando nos enfrentamos a hacer un API REST que pueda ser utilizado por otros sitios sin tener que recurrir a JSON padding, por comodidad y por la limitación del verbo a utilizar. Cross-Origin Resource Sharing, usualmente conocido como CORS,  es una especificación que permite habilitar de forma confiable el acceso across-domain-boundaries de forma que no tengamos que utilizar jsonp y soportando cualquier tipo de verbo para la operación.

Antes de intentar explicar detenidamente como funciona y como implementar CORS haremos un pequeño ejemplo con Web API que trataremos de consumir desde otro sitio y veremos como este no puede ser consumido directamente, para, posteriormente ir implementando CORS directamente. La idea del ejemplo es extremadamente simple, un método GET y un POST para un supuesto producto.