Recursos · 116

postMessage: verificar origem, janela e comando

Definir um contrato de mensagens de iframe ou popup que rejeite emissores e dados inesperados.

Atualizado · 2 min

O que este guia ajuda a alcançar

  • Definir interlocutores e tipos
  • Validar antes de produzir efeitos
  • Testar navegação e mensagens fora do contrato

Verificação rápida

  • Contrato de origem, janela, tipo e dados mínimos.
  • Validação e rejeição sem efeitos de negócio.
  • Matriz de rejeições e limpeza de listeners.

Método passo a passo

  1. 1

    Definir interlocutores e tipos

    Liste origens exatas, referência da janela e tipos úteis. Use targetOrigin preciso para dados sensíveis. A origem inclui protocolo, anfitrião e porta; procurar uma substring no domínio não valida o emissor.

    Contrato de origem, janela, tipo e dados mínimos.

  2. 2

    Validar antes de produzir efeitos

    Compare event.origin e, nesta integração, event.source com a janela esperada. Valide esquema, valores e estado da operação. Trate conteúdo como dados, sem eval ou inserção HTML. Uma origem aprovada não substitui autorização no servidor.

    Validação e rejeição sem efeitos de negócio.

  3. 3

    Testar navegação e mensagens fora do contrato

    Teste domínio semelhante, outra porta, outra janela da mesma origem, campos inválidos e mensagens após o fecho. Remova listeners desnecessários e invalide trocas concluídas. As respostas usam uma origem já aprovada mesmo após navegação da janela.

    Matriz de rejeições e limpeza de listeners.

Caso de aceitação reproduzível

Exemplo fictício: estes dados não descrevem clientes nem resultados observados.

Ver dados do caso
{
    "allowed_origin": "https://widget.example",
    "observed_origin": "https://widget.example",
    "expected_window": "active_iframe",
    "observed_window": "another_window",
    "payload_schema_valid": true,
    "expected": "reject_without_effect"
}

Decisão esperada

Exemplo fictício: https://widget.example é aprovada, mas event.source é outra janela. O contrato exige a iframe ativa: rejeite a mensagem sem emitir um comando.

MDN — Window.postMessage

O seu caderno de aceitação

Registe observações sobre os critérios deste guia. Um registo não é uma certificação.

O caderno não guarda automaticamente. Exporte antes de sair.

Indicadores de gestão

IndicadorO que medePrimeira ação
Casos inesperados rejeitadosCasos negativos rejeitados sem efeitos / casos negativos executadosRegistar origem, janela e estado
Trocas aprovadas concluídasCenários previstos concluídos / cenários previstos testadosSeparar receção e efeito confirmado

Erros comuns

    Perguntas frequentes

    Basta verificar event.origin?

    Não. Verifique janela, estrutura e estado. O servidor tem de verificar permissões para a ação.

    Referências oficiais

    As referências apoiam o método. Adapte as verificações ao seu contexto; elas não são uma certificação. Os títulos das referências originais e os documentos de origem podem estar em outro idioma.

    Referências consultadas em .