Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Microsoft Edge desabilitará a modificação
Aviso
Se o seu site depende do relaxamento da política de mesma origem por meio document.domainde , sua ação é necessária. Continue a ler mais sobre por que isso está mudando ou acesse a Comunicação alternativa entre origens para saber mais sobre mecanismos alternativos para obter a comunicação entre origens.
Introdução
A propriedade "domain" da interface Document obtém ou define a parte do domínio da origem do documento atual, conforme usado pela política de mesma origem.
O Microsoft Edge herdou essa alteração do Chromium. As tentativas de modificar a propriedade usando JavaScript document.domain agora são ignoradas. Você precisará usar abordagens alternativas, como postMessage() ou a API de Mensagens de Canal, para se comunicar entre origens. Essa alteração está no Edge 119 e posterior.
Como alternativa, se o seu site depender do relaxamento document.domain da política de mesma origem para funcionar corretamente, o site poderá enviar um Origin-Agent-Cluster: ?0 cabeçalho; esse cabeçalho deverá ser enviado de todos os outros documentos que exijam a flexibilização.
Observação
document.domain não terá efeito se apenas um documento o definir.
Por que tornar document.domain imutável?
Alguns sites são definidos document.domain para permitir a comunicação entre páginas do mesmo site, mas com origens cruzadas. A configuração document.domain possibilita que documentos do mesmo site se comuniquem com mais facilidade. Como essa alteração relaxa a política de mesma origem, uma página pai pode acessar o documento de um iframe do mesmo site e percorrer a árvore DOM e vice-versa.
Importante
Os sites de mesmo site, mas de origem cruzada, têm o mesmo eTLD+1 , mas subdomínios diferentes.
Digamos que uma página no https://parent.example.com incorpore uma página iframe de https://video.example.com. Essas páginas têm o mesmo eTLD+1 (example.com) com subdomínios diferentes. Quando ambas as páginas estão document.domain definidas como 'example.com', o navegador trata as duas páginas como se fossem da mesma origem.
Esta técnica é conveniente; mas apresenta um risco de segurança.
Preocupações de segurança com document.domain
Preocupações de segurança levaram document.domain a uma mudança na especificação que avisa os desenvolvedores sobre essa preocupação e diz a eles para evitar usá-lo, se possível. A discussão atual com outros fornecedores de navegadores está se movendo na mesma direção.
Os exemplos a seguir mostram como um invasor pode abusar do document.domain.
Considere um serviço de hospedagem compartilhada que fornece um subdomínio exclusivo para cada cliente. Se um desenvolvedor definir document.domain em sua página, a página de um invasor servida de um subdomínio diferente poderá definir o mesmo valor e modificar o conteúdo da página da vítima.
Da mesma forma, considere um serviço de hospedagem compartilhada que atende páginas usando uma porta diferente para cada cliente. Se um desenvolvedor definir document.domain em sua página, a página de um invasor servida de uma porta diferente poderá definir o mesmo valor e modificar o conteúdo da página da vítima. Esse ataque é possível porque document.domain ignora o componente de número de porta da origem.
Observação
Para saber mais sobre as implicações de segurança da configuração document.domain, leia o artigo Document.domain no MDN.
Como saberei se meu site foi afetado?
Se o seu site for afetado por essa alteração, o Microsoft Edge mostrará um aviso no painel Problemas do DevTools. A captura de tela a seguir mostra um exemplo desse aviso.
Se você tiver um ponto de extremidade de relatório configurado, também receberá relatórios de substituição. Saiba mais sobre como usar a API de relatórios com os serviços de coleta de relatórios existentes ou criando sua própria solução de relatórios.
Dica
Você pode executar seu site por meio da auditoria de API preterida do LightHouse para encontrar todas as APIs que estão agendadas para serem removidas do Microsoft Edge.
Comunicação alternativa entre origens
Atualmente, você tem duas opções para substituir document.domain seu site. Na maioria dos casos de uso, postMessage() de origem cruzada ou a API de mensagens de canal pode substituir document.domain.
A lista a seguir mostra as etapas que um desenvolvedor precisa seguir para usar postMessage() em vez de document.domain para manipulação DOM entre origens.
-
https://parent.example.comenvia uma mensagem parapostMessage()um iframe contendohttps://video.example.coma solicitação para modificar seu próprio DOM. -
https://video.example.commanipula seu DOM e o usapostMessagepara notificar o pai sobre seu sucesso. -
https://parent.example.comreconhece o sucesso.
Para a etapa 1 em https://parent.example.com:
// Configure a handler to receive messages from the subframe.
iframe.addEventListener('message', (event) => {
// Reject all messages except from https://video.example.com
if (event.origin !== 'https://video.example.com') return;
// Filter success messages
if (event.data === 'succeeded') {
// DOM manipulation is succeeded
}
});
// Send a message to the subframe at https://video.example.com
iframe.postMessage('Request DOM manipulation', 'https://video.example.com');
Para a etapa 2 em https://video.example.com:
// Configure a handler to receive messages from the parent frame.
window.addEventListener('message', (event) => {
// Reject all messages except ones from https://parent.example.com
if (event.origin !== 'https://parent.example.com') return;
// Perform requested DOM manipulation on https://video.example.com.
if (event.data === "showTheButton") {
document.getElementById('btnContinue').style.visibility = 'visible';
// Send a success message back to the parent.
event.source.postMessage('succeeded', event.origin);
}
});
Enviar o Origin-Agent-Cluster: ?0 cabeçalho como último recurso
Se você tiver fortes motivos para continuar a configuração document.domain, poderá enviar Origin-Agent-Cluster: ?0 o cabeçalho de resposta no documento de destino.
Origin-Agent-Cluster: ?0
O Origin-Agent-Cluster cabeçalho instrui o navegador se o documento deve ser manipulado pelo cluster de agente com chave de origem ou não. Para saber mais sobre Origin-Agent-Cluster, leia Solicitando isolamento de desempenho com o cabeçalho Origin-Agent-Cluster.
Quando você envia esse cabeçalho, o documento pode continuar a ser definido document.domain mesmo depois de se tornar imutável por padrão.
Compatibilidade do navegador
As organizações a seguir dão suporte à substituição document.domain no interesse da compatibilidade do navegador.
- A especificação Origin afirma que o recurso deve ser removido.
- A posição de padrões da Mozilla considera que desabilitar
document.domainpor padrão vale a pena prototipar. -
O WebKit indica que eles são moderadamente positivos sobre a substituição do
document.domainsetter.
Outros recursos
- Document.domain
-
Isolamento e preterimento de origem
document.domain -
Preterindo
document.domainsetter
Licença de conteúdo
Observação
Partes desta página são modificações baseadas no trabalho criado e compartilhado pela Chromium.org e usadas de acordo com os termos descritos na Licença Pública Creative Commons Atribuição 4.0 Internacional. A página original pode ser encontrada aqui.
Esse trabalho é licenciado sob uma Licença Attribution 4.0 International da Creative Commons.