Jeg har et spørgsmål om, hvordan svaret bliver gjort. Jeg har bemærket, at mange HTML-koder synes at fungere i forhåndsvisning af svaret, men ikke det endelige svar. Hvorfor er disse blokeret?

Jeg har et spørgsmål om, hvordan svaret bliver gjort. Jeg har bemærket, at mange HTML-koder synes at fungere i forhåndsvisning af svaret, men ikke det endelige svar. Hvorfor er disse blokeret?
Anonim

Det korte svar er, at vi bruger to forskellige Markdown-biblioteker til at gøre forhåndsvisningen og det endelige svar. Disse to forskellige biblioteker behandler HTML forskelligt.

Vores svar er stylet og formateret ved hjælp af et markup-sprog kaldet "Markdown." Markdown konverterer foruddefineret markering til HTML for links, billeder, overskrifter, kursiv, emner osv.

Uden at blive for teknisk, oprettes vores svareksempel i browseren ved hjælp af et Javascript-bibliotek. Det gør vi af hastighedsgrunde.

Når du opdaterer siden, er svaret allerede konverteret til HTML ved hjælp af vores Python Markdown-bibliotek. Det gør vi, fordi vi vil have svaret så godt, så snart du kommer til siden. Hvis vi besluttede os for blot at sende det rå svar og derefter konvertere det ved hjælp af vores Javascript-bibliotek, vil du først se det "grimme" råsvar og derefter et spring i den pænt formaterede version. Det er ikke så slemt, men problemet er, at Google og andre robotter, der kryber vores websted til søgning, ikke kører Javascript. Disse bots ville altid se det rå, grimme svar, som kunne skade vores søge ranking.

Hvorfor behandler disse to biblioteker forskellige HTML-koder? Python biblioteket ansvarlig for det endelige svar "undslipper" HTML, hvilket betyder at det tager disse HTML-koder og ændrer dem til harmløs tekst. Jeg siger harmløs, fordi du kan forestille dig, at brugerne kan indtaste HTML i vores side, kan helt ødelægge layoutet på siden. Javascript-biblioteket, der er ansvarlig for forhåndsvisning, undgår ikke HTML, hvilket teknisk set er en fejl.

I fremtiden skal vi fjerne Javascript-bibliotekets evne til at forhåndsvise HTML-koder af sikkerhedsmæssige årsager. Vi vil også flytte til brug af et enkelt bibliotek for at gøre al vores Markdown-tekst.