Em community.wanikani.com, abrir links para tópicos com caracteres japoneses na URL totalmente qualificada parou de funcionar ao abri-los em uma nova guia ou ao copiar e colar o link diretamente. Clicar no link para navegar na mesma guia ainda funciona.
Por exemplo, abrir este link em uma nova guia deveria levar a:
Se o link coincidir exatamente, funciona corretamente. Mas, é claro, com renomeações de tópicos, isso frequentemente não ocorre.
Também tentei reproduzir o problema em try.discourse.org, mas nessa instalação os caracteres japoneses nunca são adicionados à URL, mesmo quando incluídos no título do tópico. Não tenho certeza do motivo disso, mas sem que isso aconteça, não consigo demonstrar o erro lá.
suspiro Parece que pode ser mais um bug do Chrome. Funciona perfeitamente para mim tanto no Firefox quanto no Edge. Estranhamente, funciona na primeira vez em uma janela anônima, mas falha na segunda. O mesmo acontece após limpar o cache/cookies do site e reiniciar meu computador.
O Chrome diz que o erro são muitos redirecionamentos.
Você se importaria de verificar no Chrome para confirmar se é um problema geral lá e não apenas comigo? Só lembre-se de tentar abrir a página várias vezes, já que a primeira parece funcionar bem. Agradeço a ajuda!
Ainda está no Chrome? Só quero ter certeza antes de reportar o problema a eles. Imagino que nada relacionado a isso tenha mudado recentemente no Discourse? (De qualquer forma, isso provavelmente ainda seria um problema do Chrome, já que ocorre apenas nele, mesmo que algo tenha mudado no Discourse.)
Bom, esqueça isso. Voltou a acontecer hoje. Não faço ideia de como foi corrigido por um tempo.
Como isso pode levar um tempo, estou aberto a soluções alternativas por enquanto. Mencionei no tópico original que, no try (e verifiquei aqui no meta também), os caracteres japoneses nunca são adicionados à URL, contornando efetivamente esse problema. Isso é uma configuração do site ou da categoria sobre a qual posso conversar com meu administrador do site? Há alguma outra sugestão de solução alternativa além dessa?
Esse bug não existia antes das últimas atualizações (a última vez que tentei compartilhar um link foi há cerca de duas semanas, e estava tudo perfeito).
Investiguei nosso código e parece que o erro é relativamente simples, mas gostaria de verificar minhas suposições.
Temos uma configuração de site chamada slug_generation_method que precisa ser alterada do valor padrão ascii para encoded para ativar esse bug. Quando você altera essa configuração de site, limpamos todos os slugs e os geramos novamente.
O que não entendo é por que, quando a configuração de site está definida como “encoded”, geramos um slug assim:
O slug bruto da tabela é retornado no cabeçalho Location da resposta 301 quando o slug de um tópico não corresponde, e, na minha opinião, deveríamos retornar uma URL válida ali.
Então, você está dizendo que a própria URL mostraria a versão codificada? Ou apenas que o redirecionamento lidaria internamente com isso usando a versão codificada? De qualquer forma, seria ótimo fazer isso funcionar “automaticamente” e não depender de peculiaridades do navegador.
Não, conforme indicado pelo tópico aberto na categoria bug aqui
@sam, analisei isso novamente hoje e há duas abordagens possíveis:
Armazenar um slug codificado real na coluna slug quando a configuração de geração de slug estiver definida como codificado. Criar uma migração para limpar todos os slugs atuais que usam slugs codificados, para que eles sejam regenerados corretamente ao longo do tempo.
Manter o slug UTF-8 atual e corrigi-lo sob demanda ao enviá-lo em um cabeçalho para redirecionamento 301.
Na minha opinião, a opção 1 é “mais correta” e tornará mais difícil passar o slug bruto para um cliente. No entanto, apenas corrigir o gerador de slug não foi suficiente, pois os navegadores recebem uma URL codificada no redirecionamento 301, mas a decodificam na próxima solicitação, fazendo com que nossa comparação de slug falhe e redirecione novamente. Isso significa que também precisarei corrigir o método de comparação de slug no controlador de tópicos e, talvez, em outros lugares.