Mám otázku, ako je odpoveď poskytnutá. Všimol som si, že mnohé HTML kódy vyzerajú, že fungujú v náhľade odpovede, ale nezdajú sa konečnú odpoveď. Prečo sú tieto blokované?

Mám otázku, ako je odpoveď poskytnutá. Všimol som si, že mnohé HTML kódy vyzerajú, že fungujú v náhľade odpovede, ale nezdajú sa konečnú odpoveď. Prečo sú tieto blokované?
Anonim

Krátka odpoveď je, že na zobrazenie ukážky a konečnej odpovede používame dve rôzne knižnice Markdown. Tieto dve rôzne knižnice zaobchádzajú s HTML odlišne.

Naše odpovede sú štylizované a formátované pomocou značkovacieho jazyka s názvom „Markdown“. Markdown prevádza preddefinované značky do HTML pre odkazy, obrázky, hlavičky, kurzívu, zvýraznenia atď.

Bez toho, aby sme sa dostali príliš technicky, je náš náhľad náhľadu vytvorený v prehliadači pomocou knižnice Javascript. Robíme to z dôvodov rýchlosti.

Keď obnovujete stránku, odpoveď sa už skonvertuje na HTML pomocou našej knižnice Python Markdown. Robíme to preto, že chceme, aby odpoveď vyzerala skvele, len čo sa dostanete na stránku. Ak by sme sa rozhodli jednoducho odoslať surovú odpoveď a potom ju previesť pomocou našej knižnice Javascript, všimli by ste si najprv "škaredú" surovú odpoveď a potom skok do pekne formátovanej verzie. To nie je také zlé, ale problém je, že Google a ďalšie roboty, ktoré prehľadávajú naše stránky na vyhľadávanie, nespúšťajú Javascript. Títo roboty by vždy videli surovú, škaredú odpoveď, ktorá by mohla ublížiť nášmu poradiu vyhľadávania.

Prečo tieto dve knižnice zaobchádzajú s HTML kódmi inak? Knižnica Pythonu zodpovedná za konečnú odpoveď "uniká" HTML, čo znamená, že tieto HTML kódy sú zmenené na neškodný text. Hovorím neškodný, pretože si dokážete predstaviť, že používatelia môžu vložiť HTML na našu stránku a úplne zničiť rozloženie stránky. Knižnica Javascript, ktorá je zodpovedná za náhľad, neunikne HTML, čo je technicky chyba.

V budúcnosti budeme musieť odstrániť schopnosť knižnice Javascript prezerať HTML kódy z bezpečnostných dôvodov. Presunieme sa aj na používanie jednej knižnice, aby sme vykreslili celý text značky Markdown.