Como um profissional: evite camada de aplicativo desnecessária usando CORS

Quase todos os navegadores possuem a conhecida política de mesma origem ( http://en.wikipedia.org/wiki/Same_origin_policy ). Essa regra basicamente restringe a execução do script ao mesmo host + porta.
Então, suponha que você tenha um aplicativo do lado do cliente mvc desenvolvido com JS. Provavelmente, você precisará falar com alguns serviços que não estão no mesmo host. Devido à mesma política de origem, você não conseguirá acessá-los. Então, vamos discutir as estratégias para lidar com esse problema:

O jeito tradicional

Uma maneira de contornar esse problema é chamar um serviço (digamos, um ‘serviço de proxy’) que seja executado no mesmo host e permitir que esse proxy chame o serviço de destino.

Cenário

Portanto, por exemplo, temos um aplicativo da web que lista os clientes em algum lugar e um serviço da web do cliente em outro lugar. Então, da “forma tradicional”, precisaremos de um serviço de proxy que será usado pelo aplicativo da web para realmente obter os dados do serviço ao cliente. Em outras palavras, uma passagem para o atendimento ao cliente.

O jeito PRO

Como você pode imaginar, a estratégia de proxy funciona, mas parece uma solução alternativa. E isso é. E aqui está onde CORS entra em resgate.

Cenário

+ O que é CORS?

O compartilhamento de recursos entre origens ( http://www.w3.org/TR/cors/ ) é uma especificação da web que permite acessar recursos entre domínios. O CORS é compatível com alguns navegadores, mas não em todos. Então tome cuidado.

+ Como funciona?

Simplesmente verifica o cabeçalho da solicitação “Origem”, que deve conter o host de destino. Em resposta, você receberá o cabeçalho “Access-Control-Allow-Origin”.

+ Um exemplo?

O site HTML5Rocks.com fornece muitas informações sobre o CORS. Deixe-me sugerir este exemplo: http://www.html5rocks.com/en/tutorials/cors/?redirect_from_locale=es