URL dữ liệu là một lược đồ URI cung cấp một cách để nội dòng dữ liệu trong tài liệu và nó thường được sử dụng để nhúng hình ảnh vào HTML và CSS
Giới thiệu
URL dữ liệu là một lược đồ URI cung cấp một cách để nội dòng dữ liệu trong tài liệu HTML.
Giả sử bạn muốn nhúng một hình ảnh nhỏ. Bạn có thể làm theo cách thông thường, tải nó lên một thư mục và sử dụngimg
để làm cho trình duyệt tham chiếu nó từ mạng:
<img src="image.png" />
hoặc bạn có thể mã hóa nó ở một định dạng đặc biệt, được gọi là URL dữ liệu, giúp bạn có thể nhúng hình ảnh trực tiếp vào tài liệu HTML, vì vậy trình duyệt không phải thực hiện một yêu cầu riêng để lấy nó.
URL dữ liệu có thể tiết kiệm một chút thời gian cho các tệp nhỏ, nhưng đối với các tệp lớn hơn, có nhược điểm là kích thước tệp HTML tăng lên và chúng đặc biệt là một vấn đề nếu hình ảnh tải lại trên tất cả các trang của bạn, vì bạn không thể tận dụng bộ nhớ đệm của trình duyệt các khả năng.
Ngoài ra, hình ảnh được mã hóa dưới dạng URL dữ liệu thường lớn hơn một chút so với hình ảnh tương tự ở định dạng nhị phân.
Chúng không thực tế nhiều nếu hình ảnh của bạn thường xuyên được chỉnh sửa, vì mỗi lần thay đổi hình ảnh, nó phải được mã hóa lại.
Điều đó nói lên rằng họ có vị trí của mình trên Nền tảng web.
URL dữ liệu trông như thế nào
URL dữ liệu là một chuỗi bắt đầu bằngdata:
tiếp theo là định dạng kiểu MIME. Ví dụ, một hình ảnh PNG có kiểu kịch câmimage/png
.
Tiếp theo là dấu phẩy và sau đó là dữ liệu thực tế.
Văn bản thường được chuyển dưới dạng văn bản thuần túy, trong khi dữ liệu nhị phân thường được mã hóa base64.
Dưới đây là một ví dụ về cách URL dữ liệu như vậy sẽ trông như thế nào:
<img src="data:image/png,%89PNG%0D%0A..." />
Vàđây là một phiên bản nhỏ của hình ảnh biểu ngữ của bài viết này được mã hóa trong một liên kết
Đây là cách URL dữ liệu được mã hóa base64 trông như thế nào. Lưu ý rằng nó bắt đầu bằngdata:image/png;base64
:
<img src="data:image/png;base64,iVBORw0KGgoAA..." />
Trang web này có một trình tạo URL dữ liệu rất đẹp:https://dopiaza.org/tools/datauri/index.phpmà bạn có thể sử dụng để chuyển đổi bất kỳ hình ảnh nào trên màn hình của bạn thành URL dữ liệu.
URL dữ liệu có thể được sử dụng ở bất kỳ nơi nào mà một URL có thể được sử dụng, như bạn đã thấy, bạn có thể sử dụng nó cho các liên kết, nhưng cũng thường sử dụng chúng trong CSS:
.main {
background-image url('data:image/png;base64,iVBORw0KGgoAA...');
}
Hỗ trợ trình duyệt
họ đangđược hỗ trợ trong tất cả các trình duyệt hiện đại.
Bảo vệ
URL dữ liệu có thể mã hóa bất kỳ loại thông tin nào, không chỉ hình ảnh, và do đó chúng đi kèm với tập hợp các hàm ý bảo mật của chúng.
TừWikipedia:
URI dữ liệu có thể được sử dụng để xây dựng các trang tấn công nhằm lấy tên người dùng và mật khẩu từ những người dùng web không nghi ngờ. Nó cũng có thể được sử dụng để giải quyết tập lệnh trên nhiều trang web (XSS) hạn chế, nhúng hoàn toàn trọng tải tấn công vào bên trong thanh địa chỉ và được lưu trữ thông qua các dịch vụ rút ngắn URL thay vì cần một trang web đầy đủ do bên thứ ba kiểm soát.
Kiểm trabài viết này từ Blog Mozilla Firefoxđể biết thêm thông tin về cách người dùng độc hại có thể sử dụng URL dữ liệu để làm việc xấu và cách trình duyệt Firefox giảm thiểu những rủi ro đó.
URL dữ liệu được xác định trongRFC 2397.
Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript
Các hướng dẫn khác về trình duyệt:
- Một số thủ thuật hữu ích có sẵn trong HTML5
- Cách tôi làm cho một trang web dựa trên CMS hoạt động ngoại tuyến
- Hướng dẫn hoàn chỉnh về ứng dụng web tiến bộ
- API tìm nạp
- Hướng dẫn API đẩy
- API nhắn tin kênh
- Hướng dẫn Nhân viên Dịch vụ
- Hướng dẫn API bộ nhớ cache
- Hướng dẫn API thông báo
- Đi sâu vào IndexedDB
- API Bộ chọn: querySelector và querySelectorAll
- Tải JavaScript hiệu quả với trì hoãn và không đồng bộ
- Mô hình đối tượng tài liệu (DOM)
- API lưu trữ web: lưu trữ cục bộ và lưu trữ phiên
- Tìm hiểu cách hoạt động của HTTP Cookies
- API lịch sử
- Định dạng hình ảnh WebP
- XMLHttpRequest (XHR)
- Hướng dẫn chuyên sâu về SVG
- URL dữ liệu là gì
- Lộ trình tìm hiểu Nền tảng Web
- CORS, Chia sẻ tài nguyên đa nguồn gốc
- Nhân viên web
- Hướng dẫn requestAnimationFrame ()
- Doctype là gì
- Làm việc với Bảng điều khiển DevTools và API Bảng điều khiển
- API tổng hợp giọng nói
- Cách chờ sự kiện DOM sẵn sàng bằng JavaScript thuần túy
- Cách thêm lớp vào phần tử DOM
- Cách lặp qua các phần tử DOM từ querySelectorAll
- Cách xóa một lớp khỏi phần tử DOM
- Cách kiểm tra xem một phần tử DOM có một lớp hay không
- Cách thay đổi giá trị nút DOM
- Cách thêm sự kiện nhấp chuột vào danh sách các phần tử DOM được trả về từ querySelectorAll
- WebRTC, API web thời gian thực
- Cách lấy vị trí cuộn của một phần tử trong JavaScript
- Cách thay thế một phần tử DOM
- Cách chỉ chấp nhận hình ảnh trong trường tệp đầu vào
- Tại sao sử dụng phiên bản xem trước của trình duyệt?
- Đối tượng Blob
- Đối tượng tệp
- Đối tượng FileReader
- Đối tượng FileList
- ArrayBuffer
- ArrayBufferView
- Đối tượng URL
- Mảng đã nhập
- Đối tượng DataView
- API BroadcastChannel
- API luồng
- Đối tượng FormData
- Đối tượng Điều hướng
- Cách sử dụng API vị trí địa lý
- Cách sử dụng getUserMedia ()
- Cách sử dụng API Kéo và Thả
- Cách làm việc với tính năng cuộn trên các Trang Web
- Xử lý các biểu mẫu trong JavaScript
- Sự kiện bàn phím
- Sự kiện chuột
- Chạm vào sự kiện
- Cách xóa tất cả phần tử con khỏi phần tử DOM
- Cách tạo thuộc tính HTML bằng vanilla Javascript
- Làm cách nào để kiểm tra xem một hộp kiểm đã được chọn bằng JavaScript hay chưa?
- Cách sao chép vào khay nhớ tạm bằng JavaScript
- Cách tắt một nút bằng JavaScript
- Cách làm cho một trang có thể chỉnh sửa trong trình duyệt
- Cách lấy giá trị chuỗi truy vấn trong JavaScript với URLSearchParams
- Cách xóa tất cả CSS khỏi một trang cùng một lúc
- Cách sử dụng insertAdjacentHTML
- Safari, cảnh báo trước khi thoát
- Cách thêm hình ảnh vào DOM bằng JavaScript
- Cách đặt lại biểu mẫu
- Cách sử dụng Google Fonts