In community.wanikani.com, l’apertura di qualsiasi link a discussioni con caratteri giapponesi nell’URL completo ha smesso di funzionare quando si aprono in una nuova scheda o quando si copia e incolla direttamente il link. Cliccare sul link per navigare nella stessa scheda funziona ancora.
Ad esempio, aprire questo link in una nuova scheda dovrebbe reindirizzare a
Se il link corrisponde esattamente, funziona correttamente. Ma ovviamente, con i rinominamenti delle discussioni, questo spesso non è il caso.
Ho anche provato a riprodurre il problema su try.discourse.org, ma in quella installazione i caratteri giapponesi non vengono mai aggiunti all’URL, anche se inclusi nel titolo della discussione. Non sono sicuro del motivo, ma senza che ciò accada non posso dimostrare il bug lì.
sospiro Sembra che possa essere un altro bug di Chrome. Funziona perfettamente per me sia su Firefox che su Edge. Stranamente, funziona la prima volta in una finestra di navigazione in incognito, ma poi fallisce la seconda volta. Lo stesso accade dopo aver cancellato la cache e i cookie del sito e riavviato il computer.
Potresti controllare su Chrome per confermare se si tratta di un problema generale e non solo mio? Assicurati solo di provare ad aprire la pagina più volte, dato che la prima sembra funzionare correttamente. Apprezzo molto il tuo aiuto!
Ancora con Chrome? Voglio solo essere sicuro prima di segnalarlo a loro. Immagino che su Discourse non sia cambiato nulla al riguardo di recente? (Comunque, questo sarebbe probabilmente ancora un problema di Chrome, dato che succede solo lì, anche se qualcosa fosse cambiato su Discourse.)
In realtà, no. È ricominciato oggi. Non ho idea di come sia stato risolto per un po’.
Dato che potrebbe volerci del tempo, sarei aperto a soluzioni alternative per ora. Ho menzionato nell’OP che su try (e ho controllato anche qui su meta) i caratteri giapponesi non vengono mai aggiunti all’URL, aggirando di fatto il problema. È una impostazione del sito o della categoria di cui potrei parlare con il mio amministratore del sito? Hai altri suggerimenti per una soluzione alternativa oltre a quella?
Questo bug non esisteva prima degli ultimi aggiornamenti (l’ultima volta che ho provato a condividere un link è stata circa due settimane fa, e funzionava perfettamente).
Ho analizzato il nostro codice e sembra che l’errore sia piuttosto semplice, ma vorrei verificare le mie ipotesi.
Abbiamo una configurazione del sito chiamata slug_generation_method che deve essere modificata dal valore predefinito ascii a encoded per attivare questo bug. Quando si modifica questa configurazione, cancelliamo tutti gli slug e li rigeneriamo.
Quello che non capisco è perché, quando la configurazione del sito è impostata su “encoded”, generiamo uno slug in questo modo:
Lo slug grezzo dalla tabella viene restituito nell’intestazione Location della risposta 301 quando lo slug di un argomento non corrisponde e, a mio avviso, dovremmo restituire un URL valido.
Stai dicendo che l’URL stesso mostrerebbe la versione codificata? O semplicemente che il reindirizzamento la gestirebbe internamente utilizzando la versione codificata? In ogni caso, sarebbe fantastico far sì che funzioni “senza problemi” senza dipendere da comportamenti specifici del browser.
No, come indicato dal topic aperto nella categoria bug qui
@sam Ho dato un’occhiata a questo di nuovo oggi e ci sono due strade da seguire:
Memorizzare uno slug encoded effettivo nella colonna slug quando l’impostazione di generazione degli slug è impostata su encoded. Eseguire una migrazione per cancellare tutti gli slug attuali quando si usano slug encoded, in modo che vengano rigenerati correttamente nel tempo.
Mantenere lo slug UTF-8 corrente e correggerlo al volo quando viene inviato in un header per il reindirizzamento 301.
A mio parere, l’opzione 1 è “più corretta” e renderà più difficile passare lo slug raw a un client. Tuttavia, correggere solo il generatore di slug non è stato sufficiente, poiché i browser ricevono un URL encoded nel reindirizzamento 301 ma lo decodificano per la prossima richiesta, causando il fallimento del nostro confronto degli slug e un nuovo reindirizzamento. Questo significa che dovrò correggere anche il metodo di confronto degli slug nel controller dei topic e forse in altri punti.