SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
MVP ShowCast 2013
Aplicações e serviços Web interoperáveis com o padrão Cross-Origin Resource Sharing (CORS)
Rogério Moraes de Carvalho
@rogeriomc
Visual C#
Diretor de Tecnologia – VITA Informática
rogeriomc.wordpress.com
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Agenda
♦User-Agent
♦Web Origin
♦Same-Origin Policy
♦JSON-P
♦Cross-Origin Resource Sharing
♦Cross-Domain AJAX com CORS
♦Demonstração: Cross-Domain AJAX com CORS
♦Documentação
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
User-Agent
♦O que é um agente de usuário (user agent)?♦ É um software que age em nome de um usuário
♦ Exemplos♦ Browser (Chrome, Internet Explorer, Firefox, Safari, Opera, etc.)
♦ Cliente de e-mail (Outlook, Windows Mail, Mac OS X Mail, Thunderbird, etc.)
♦Cenário comum♦Agente de usuário como cliente num protocolo de rede usado em
comunicações cliente/servidor
♦ Exemplo♦ O protocolo HTTP identifica o software cliente que origina uma requisição usando o
cabeçalho User-Agent
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Web Origin
♦O que são Web Origins?
♦ Forma de agentes de usuário agruparem URIs juntas em domínios protegidos
♦Regra para dois URIs serem classificadas na mesma origem web
♦Devem ter os mesmos: esquemas, hospedeiros e portas
♦Caracterização de uma Web Origin
♦ Trio (esquema, hospedeiro, porta): esquema://hospedeiro[:porta]
♦ Esquema do URI
♦ Hospedeiro do URI
♦ Porta do URI (se omitida, então assume-se a porta padrão do protocolo do esquema)
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Same-Origin Policy
♦O que é a Same-Origin Policy (política de mesma origem)?
♦Documentos recuperados de origens distintas são isolados uns dos outros
♦ Em domínios protegidos uns dos outros
♦ Exemplo
♦ Um documento em http://mvpshowcast.azurewebsites.net/Evento não pode acessar o
DOM de um documento em https://mvpshowcast.azurewebsites.net/MVP
♦ Origem do documento http://mvpshowcast.azurewebsites.net/Evento
♦ Esquema: http; Hospedeiro: mvpshowcast.azurewebsites.net; Porta: 80
♦ Origem do documento https://mvpshowcast.azurewebsites.net/MVP
♦ Esquema: https; Hospedeiro: mvpshowcast.azurewebsites.net; Porta: 443
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Cross-domain AJAX
♦O que é AJAX?
♦Um acrônimo para Asynchronous JavaScript and XML
♦Grupo de técnicas relacionadas de desenvolvimento web usadas do lado do
cliente para criar aplicações web assíncronas
♦ O objeto XMLHttpRequest é usado para trafegar os dados entre cliente e servidor
♦ Independente do nome, XML não é obrigatório
♦ JSON é usado com frequência
♦ Existe o termo AJAJ (Asynchronous JavaScript and JSON), mas é pouco usado
♦O que é cross-domain AJAX?
♦A ideia de realizar requisições entre diferentes domínios em oposição à
restrição Same-Origin Policy
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
JSON-P
♦O que é JSON-P?
♦Significa JSON with padding
♦Mecanismo para requisições de conteúdo cross-domain com o tag <script>
function processarDados(dadosJSON) {// O argumento dadosJSON deve ser uma representação JSON dos dados....
}
<script type="text/javascript"src="http://dominiocruzado.com.br/servicoweb?jsonp=processarDados">
</script>
processarDados({ webcast: "CORS", trilha: "Interoperabilidade", sessao: "IT" });
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Cross-Origin Resource Sharing (CORS)
♦O que é Cross-Origin Resource Sharing (CORS)?♦Mecanismo que habilita requisições do lado do cliente de origens cruzadas
♦Especificação no W3C♦Cross-Origin Resource Sharing
♦ W3C Candidate Recommendation 29 January 2013
♦ http://www.w3.org/TR/cors/
♦ Produzido em conjunto por dois grupos de trabalho no W3C
♦ Web Applications (WebApps) e Web Application Security (WebAppSec)
♦Benefícios da padronização♦APIs que fazem requisições de origens cruzadas podem usar os algoritmos
definidos na especificação
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Cross-Domain AJAX com CORS
♦O que é XMLHttpRequest?
♦ É uma API que fornece funcionalidades do lado do cliente para transmissão
de dados entre um cliente e um servidor
♦Especificação XMLHttpRequest no W3C
♦W3C Working Draft 6 December 2012
♦http://www.w3.org/TR/XMLHttpRequest/
♦A nova especificação XMLHttpRequest introduz novos recursos
♦Requisições de origens cruzadas
♦ Eventos de progresso de upload
♦ Suporte para upload e download de dados binários
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
DemonstraçãoCross-Domain AJAX com CORS
♦Criação de uma solução no Visual Studio 2013
♦Projeto de uma API web
♦ MvpShowCast.WebApi
♦Projeto de uma aplicação web
♦ MvpShowCast.WebSite
♦Publicação da solução no Windows Azure
♦API web: mvpshowcastwebapi.azurewebsites.net
♦Aplicação web: mvpshowcastwebsite.azurewebsites.net
♦Aplicação web 2: mvpshowcastwebsite2.azurewebsites.net
♦Habilitação de CORS na API web
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Documentação
♦HTTP/1.1 User-Agent
♦http://tools.ietf.org/html/rfc2616#section-14.43
♦The Web Origin Concept
♦http://tools.ietf.org/html/rfc6454
♦Same-Origin Policy
♦http://www.w3.org/Security/wiki/Same_Origin_Policy
♦Cross-Origin Resource Sharing
♦W3C Candidate Recommendation 29 January 2013
♦http://www.w3.org/TR/cors/
SESSÃO: INFRAESTRUTURA TRILHA: INTEROPERABILIDADE
© 2013, MVP ShowCast. Evento organizado por MVPs do Brasil com apoio da Microsoft.
Perguntas & Respostas
Rogério Moraes de Carvalho
@rogeriomc
Visual C#
Diretor de Tecnologia – VITA Informática
rogeriomc.wordpress.com