Imam pitanje o tome kako se odgovor daje. Primijetio sam da mnogi HTML kodovi djeluju u pregledu odgovora, ali se ne pojavljuju kao konačni odgovor. Zašto su blokirane?

Imam pitanje o tome kako se odgovor daje. Primijetio sam da mnogi HTML kodovi djeluju u pregledu odgovora, ali se ne pojavljuju kao konačni odgovor. Zašto su blokirane?
Anonim

Kratak odgovor je da koristimo dvije različite Markdown knjižnice kako bismo prikazali pregled i konačni odgovor. Te dvije različite knjižnice različito tretiraju HTML.

Naši su odgovori oblikovani i oblikovani pomoću označne oznake "Markdown". Markdown pretvara unaprijed definirane oznake u HTML za veze, slike, zaglavlja, kurziv, naglaske itd.

Bez prevelikog tehničkog pregleda, naš pregled odgovora stvara se u pregledniku pomoću Javascript biblioteke. To radimo zbog brzih razloga.

Kada osvježite stranicu, odgovor je već konvertiran u HTML pomoću naše Python Markdown knjižnice. To radimo zato što želimo da odgovor izgleda sjajno čim dođete do stranice. Ako smo odlučili jednostavno ispisati sirovi odgovor, a zatim ga pretvoriti pomoću naše Javascript biblioteke, primijetili biste prvo "ružni" sirovi odgovor, a zatim skočili u lijepo oblikovanu verziju. To nije tako loše, ali problem je u tome što Google i ostali roboti koji pretražuju našu stranicu ne pretražuju Javascript. Ti roboti uvijek bi vidjeli sirovi, ružni odgovor koji bi mogao naštetiti našem rangiranju pretraživanja.

Sada, zašto ove dvije knjižnice različito tretiraju HTML kodove? Python knjižnica odgovorna za konačni odgovor "bježi" HTML, što znači da uzima te HTML kodove i mijenja ih u bezopasan tekst. Kažem bezopasan, jer možete zamisliti dopuštajući korisnicima da unose HTML u našu stranicu može potpuno uništiti izgled stranice. Javascript biblioteka odgovorna za pregled ne izbjegava HTML, što je tehnički greška.

Ubuduće ćemo morati ukloniti mogućnost da JavaScript biblioteka pregledava HTML kodove iz sigurnosnih razloga. Također ćemo prijeći na korištenje jedne knjižnice za prikaz svih naših Markdown tekstova.