Estou usando a API para criar mensagens privadas (PMs). O conteúdo pode conter HTML e links. Entre esses links, alguns são links de ação com um clique. Exemplo básico de link: <a href="https://" target="_blank">..</a>
O problema é que o Discourse visita todos os links e aciona essas ações de um clique.
Como evitar isso? Não tenho certeza de qual recurso é responsável por isso.
Existe alguma dica que possamos inserir no HTML para instruir o Discourse a ignorar um link?
Ou há alguma opção que eu tenha perdido?
Nota: atualmente, adicionei uma verificação no backend para ignorar a visita do Discourse, mas, se possível, gostaria de evitar depender disso.
Você não deve codificar um link que execute uma ação apenas ao ser visitado. Isso é amplamente considerado explorável de várias maneiras. O usuário precisa confirmar explicitamente a ação.
O contexto é basicamente que os usuários se inscrevem para receber notificações e, por motivos legais, é necessário incluir links que permitam que eles se desinscrevam da notificação atual ou de todas as notificações. Esses links específicos devem ser ações de um único clique, sem etapas adicionais (como login, confirmação, etc.). Esses links utilizam um token gerado e não podem ser explorados. Os usuários verão a mensagem com esses links em sua caixa de entrada privada (Discourse ou outras, como Gmail), e confirmações são indesejadas nesse caso e não serão úteis.
Minha pergunta continua válida: existe uma maneira de instruir o Discourse a não acessar um link? Seja por meio de HTML ou opções?
Independentemente do contexto, é realmente interessante saber. Se não existir, ter uma opção para bloquear domínios/URLs a fim de evitar solicitações desnecessárias seria muito bem-vindo.
Mais uma vez: você não pode fazer isso. Existem também navegadores (e extensões) e antivírus que pré-visitam ou pré-carregam links que encontram em uma página.
Qualquer solicitação que cause uma alteração real no servidor deve ser uma requisição POST, conforme a especificação HTTP. Portanto, se você tiver um link, ele deve levar a uma página da web contendo um botão que execute uma requisição POST. Qualquer outra abordagem levará a problemas obscuros.
Quem diz que precisam ser? É bastante comum que links de cancelamento de inscrição levem a uma página de confirmação — exatamente pelo motivo que mencionei acima.