Cross-origin resource sharing
Cross-origin resource sharing (CORS)(ou compartilhamento de recursos cross-origem) é uma especificação de uma tecnologia de navegadores que define meios para um servidor permitir que seus recursos sejam acessados por uma página web de um domínio diferente.1 Esse tipo de acesso seria de outra forma negado pela same origin policy. CORS define um meio pelo qual um navegador e um servidor web podem interagir para determinar se deve ou não requisições cross-origem2 . É um acordo que permite grande flexibilidade, mas é mais seguro que permitir todos as requisições desse tipo.
Índice |
Implementação [editar]
Implementar o CORS em um servidor é simples como enviar cabeçalhos HTTP adicionais, por exemplo:
Access-Control-Allow-Origin: * Access-Control-Allow-Origin: http://example.com:8080 http://foo.example.com
[editar]
O CORS é suportado por todos os navegadores baseados nas seguintes engines:
- Gecko 1.9.1 (Firefox 3.5,3 SeaMonkey 2.04 ) e acima.
- WebKit (Incerto sobre as versão inicial, Safari 4 e superiores,1 o Google Chrome 3 e superiores, possivelmente anteriores5 )
- MSHTML/Trident 4.0 (Internet Explorer 8) provê suporte parcial via objeto XDomainRequest.1
História [editar]
O suporte a Cross-orign foi originalmente proposto por Matt Oshry, Brad Porter, and Michael Bodell da Tellme Networks em março de 2004 para a inclusão no VoiceXML2.16 para permitir requisições de dados cross-orign de forma segura por navegadores VoiceXML. O mecanismo foi considerado como sendo geral em natureza e não especifico ao VoiceXML e foi posteriormente separado em uma Nota de Implementação.7 O WebApps Working Group da W3C com a participação dos principais fabricantes de navegadores começaram a formalizar a Nota em um W3C Working Draft no caminho de um status formal de uma Recomendação W3C.
Relacionamento de CORS com JSONP [editar]
CORS pode ser usada com uma alternativa moderna ao padrão JSONP. Enquanto JSONP suporta somente requisições usando o método GET, CORS também suporta outros tipos de requisições HTTP. Com CORS é possível usar XMLHttpRequest comuns, que suportam melhor o tratamento de erro que JSONP. Por outro lado, JSONP funciona com navegadores legados sem suporte a CORS. CORS é suportado pela maioria dos navegadores modernos.8 9
References [editar]
- ↑ a b c http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
- ↑ http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
- ↑ https://developer.mozilla.org/En/HTTP_access_control
- ↑ https://developer.mozilla.org/en/Gecko
- ↑ http://osvdb.org/59940
- ↑ http://www.w3.org/TR/2004/WD-voicexml21-20040323/
- ↑ http://www.w3.org/TR/2005/NOTE-access-control-20050613/
- ↑ http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
- ↑ http://caniuse.com/#feat=cors