HTTP : Política de Mesma Origem
A política de mesma origem (same-origin policy) restringe como uma página HTML ou script lido de uma origem pode interagir com um recurso (página, imagem, script) de outra origem.
Definição de Origem
O termo origem é a tripla de informações {protocolo, host, porta}. Por exemplo, para a URL http://ap1.ufsc.br:3000/catalogo/index.html
, a origem é {http, ap1.ufsc.br, 3000}
onde o protocolo é o http, o host é o ap1.ufsc.br e a porta é a 3000.
Assim duas URLs diferentes, como a acima e http://ap1.ufsc.br:3000/index.html
, possuem a mesma origem.
Segurança
O problema de segurança tratato pela política de mesma origem está relacionado a como os navegadores, via protocolo HTTP, recebem e enviam dados aos servidores.
Considere, por exemplo, a situação onde um usuário acessa duas aplicações de origens diferentes ao mesmo tempo. Sem a política de mesma origem, é possível que um código JavaScript malicioso de uma delas passe a enviar requisições para a origem da outra aplicação.
Com a política de mesma origem, uma aplicação só pode ter acesso a recursos da mesma origem.
CORS
CORS, acrônimo para Cross-Origin Resource Sharing (Compartilhamento de Recurso de Origem Diferente), é um mecanismo que permite relaxar a política de mesma origem. O navegador pode obter recursos de origens diferentes da origem da aplicação.
O compartilhamento de recursos é, na prática, uma necessidade. Uma aplicação pode utilizar fontes, estilos CSS, imagens e scripts disponíveis em outras origens. Estilos CSS e fontes (por exemplo, fontes Google) são os casos mais comuns.
Os recursos compartilhados são frequentemente disponibilizados por meio de CDNs.
Cabeçalhos Origin e Access-Control-Allow-Origin
Requisições HTTP "do tipo CORS" incluem, caso mais simples, o cabeçalho cabeçalho HTTP Origin. O valor é a origem de onde parte a requisição.
Respostas HTTP "do tipo CORS" incluem, no caso mais simples, o cabeçalho Access-Control-Allow-Origin. O valor são as origens permitidas ou *
(asterisco) para indicar que o recurso é público e pode ser acessado a partir de qualquer origem. As CDNs, naturalmente, utilizam o asterisco.
Leitura Obrigatória |
---|
Política de Mesma Origem |
Explicando a Política de Mesma Origem |
CORS |