Tôi có một câu hỏi về cách trả lời. Tôi đã nhận thấy rằng nhiều mã HTML dường như hoạt động trong bản xem trước của câu trả lời nhưng không xuất hiện câu trả lời cuối cùng. Tại sao những thứ này bị chặn?

Tôi có một câu hỏi về cách trả lời. Tôi đã nhận thấy rằng nhiều mã HTML dường như hoạt động trong bản xem trước của câu trả lời nhưng không xuất hiện câu trả lời cuối cùng. Tại sao những thứ này bị chặn?
Anonim

Câu trả lời ngắn gọn là chúng tôi sử dụng hai thư viện Markdown khác nhau để hiển thị bản xem trước và câu trả lời cuối cùng. Hai thư viện khác nhau đối xử với HTML khác nhau.

Câu trả lời của chúng tôi được tạo kiểu và định dạng bằng ngôn ngữ đánh dấu có tên là "Đánh dấu". Markdown chuyển đổi đánh dấu được xác định trước thành HTML cho các liên kết, hình ảnh, tiêu đề, in nghiêng, nhấn mạnh, v.v.

Không cần quá kỹ thuật, bản xem trước câu trả lời của chúng tôi được tạo trong trình duyệt bằng thư viện Javascript. Chúng tôi làm điều này vì lý do tốc độ.

Khi bạn làm mới trang, câu trả lời đã được chuyển đổi sang HTML bằng thư viện Python Markdown của chúng tôi. Chúng tôi làm điều này bởi vì chúng tôi muốn câu trả lời sẽ tuyệt vời ngay khi bạn vào trang. Nếu chúng tôi quyết định chỉ đơn giản là xuất câu trả lời thô và sau đó chuyển đổi nó bằng thư viện Javascript của chúng tôi, trước tiên bạn sẽ nhận thấy câu trả lời thô "xấu xí" và sau đó nhảy vào phiên bản được định dạng độc đáo. Điều đó không tệ lắm, nhưng vấn đề là Google và các bot khác thu thập dữ liệu trang web của chúng tôi để tìm kiếm không chạy Javascript. Những bot đó sẽ luôn thấy câu trả lời thô thiển, xấu xí có thể làm tổn thương thứ hạng tìm kiếm của chúng tôi.

Bây giờ, tại sao hai thư viện này lại xử lý mã HTML khác nhau? Thư viện Python chịu trách nhiệm cho câu trả lời cuối cùng "thoát" HTML, nghĩa là nó lấy các mã HTML đó và thay đổi chúng thành văn bản vô hại. Tôi nói vô hại vì bạn có thể tưởng tượng việc cho phép người dùng nhập HTML vào trang của chúng tôi có thể phá hủy hoàn toàn bố cục của trang. Thư viện Javascript chịu trách nhiệm cho bản xem trước KHÔNG thoát khỏi HTML, về mặt kỹ thuật là một lỗi.

Trong tương lai, chúng tôi sẽ phải loại bỏ khả năng thư viện Javascript để xem trước mã HTML vì lý do bảo mật. Chúng tôi cũng sẽ chuyển sang sử dụng một thư viện duy nhất để hiển thị tất cả văn bản Markdown của chúng tôi.