JS метод Object.atob()


Загальний опис

Функція atob() є вбудованою глобальною функцією, що використовується для декодування даних, закодованих за допомогою методу Base64. Ця функція приймає один аргумент - рядок, закодований у форматі Base64, і повертає декодований рядок. Застосування atob() можна зустріти в сценаріях, де необхідно декодувати дані, отримані в форматі Base64, наприклад, при роботі з API, які повертають закодовані дані, або при обробці даних, які були закодовані для передачі через URL.

Виклик atob() виглядає досить просто. Наприклад, якщо потрібно декодувати рядок SGVsbG8gV29ybGQh, виклик функції буде наступним:

let decodedString = atob('SGVsbG8gV29ybGQh');
console.log(decodedString); // Виводить: Hello World!

Цей рядок був спочатку закодований в Base64, і atob() повертає його у вигляді звичайного тексту.

Однак, важливо розуміти, що atob() призначена лише для обробки рядків, закодованих у форматі Base64, і може викинути помилку, якщо вхідний рядок містить символи, які не відповідають цьому формату. Тому перед використанням atob() важливо переконатися, що рядок дійсно закодований у Base64.

У більш складних сценаріях atob() може використовуватися для декодування даних, отриманих у вигляді бінарних файлів або інших форматів, які були перетворені у рядок Base64. Наприклад, можна декодувати зображення, закодоване у Base64, і відображати його на веб-сторінці:

let base64Image = 'data:image/png;base64,iVBORw0KGgo...';
let image = new Image();
image.src = atob(base64Image.split(',')[1]);
document.body.appendChild(image);

У цьому прикладі base64Image містить зображення у форматі Base64, яке спочатку розділяється на частини (відокремлення метаданих про формат), а потім декодується і вставляється на сторінку як зображення.

Важливо пам'ятати, що atob() не є безпечною функцією з точки зору безпеки. Оскільки вона не здійснює жодної перевірки аутентичності або цілісності вхідних даних, її використання з даними, отриманими з ненадійних джерел, може становити ризик. Також варто враховувати, що Base64 не є механізмом шифрування і не повинен використовуватися для захисту конфіденційних даних.

автор: Bond

Порада

Переконайтеся, що вхідний рядок для методу atob() є коректно закодованим у форматі base-64. Якщо переданий рядок не відповідає цьому формату, виклик методу призведе до помилки. Наприклад, використання atob("SGVsbG8gV29ybGQ=") правильно декодує рядок "Hello World", але передача некоректного рядка спричинить помилку.

автор: Bond
Порада

Врахуйте, що вихідний рядок методу atob() завжди буде у форматі ASCII. Тому, якщо оригінальний закодований текст містив символи поза ASCII-діапазоном, вони будуть втрачені або неправильно інтерпретовані після декодування. Це важливо розуміти при роботі з міжнародними або багатомовними даними.

автор: Bond
Порада

Використовуйте метод atob() для декодування даних, які були закодовані у форматі base-64 на стороні сервера або іншого клієнта. Це може бути корисним, наприклад, при отриманні закодованих даних через API або при обробці даних, збережених у вигляді рядків у локальному сховищі.

автор: Bond
Порада

Зверніть увагу на безпеку при роботі з atob(). Оскільки цей метод використовується для декодування даних, важливо переконатися, що декодовані дані не містять шкідливого коду або не використовуються в уразливих контекстах. Завжди перевіряйте джерело даних та їхній вміст перед декодуванням.

автор: Bond

Синтаксис

atob(encodedData)

Параметри

encodedData

Рядок у форматі двійкового коду (тобто рядок, в якому кожен символ розглядається як байт двійкових даних) із закодованими даними у форматі base64.

автор: Bond

Повернення

string

Повертає рядок ASCII, що містить розкодовані дані з encodedData.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
4 1 3 10.5 12 10
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
16.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми беремо закодований рядок encodedText, використовуємо метод atob() для його декодування і отримуємо оригінальний текст "Hello World!".

// Закодований рядок у форматі Base64
const encodedText = "SGVsbG8gV29ybGQh"; // Це представляє "Hello World!" закодований в Base64

// Використання методу atob() для декодування тексту
const decodedText = atob(encodedText);

// Виведення результуючого рядка
console.log(decodedText); // Виведе: "Hello World!"
автор: Bond

У цьому прикладі ми беремо закодоване зображення у форматі Base64, створюємо новий об'єкт <img> і встановлюємо закодоване зображення як джерело зображення для цього об'єкту. Потім ми додаємо <img> до DOM сторінки, щоб відобразити зображення на веб-сторінці.

// Закодоване зображення у форматі Base64
const encodedImage = "data:image/png;base64,iVBORw0KG..."; // Приклад закодованого зображення

// Створення нового об'єкту <img> для відображення зображення
const imgElement = document.createElement("img");

// Встановлення декодованого зображення як джерела зображення для <img>
imgElement.src = encodedImage;

// Додавання <img> до DOM для відображення зображення на сторінці
document.body.appendChild(imgElement);
автор: Bond

У цьому прикладі користувач може ввести закодований рядок Base64, натиснути кнопку "Декодувати", і результат декодування буде відображений під кнопкою. Якщо введено некоректний Base64 рядок, буде виведено повідомлення про помилку.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід