Зачем нам нужно кодировать изображения base64 перед передачей?

Возможный дубликат:
В чем заключается использование кодировки base 64?

Я видел много фрагментов кода, которые base64 кодирует изображения перед передачей по протоколу HTTP.

Мне интересно, зачем нам это нужно?

Это не обязательно, но позволяет вставлять изображения без дополнительных HTTP-запросов (где, в некоторых случаях, это невозможно или разрешено).

Из статьи Википедии на Base64 :

Термин Base64 относится к определенному кодированию передачи содержимого MIME. Он также используется в качестве общего термина для любой аналогичной схемы кодирования, которая кодирует двоичные данные, обрабатывая ее численно и переводя ее в представление базы 64. Конкретный выбор базы обусловлен историей кодирования набора символов: можно выбрать набор из 64 символов, который является частью подмножества, общего для большинства кодировок, а также для печати. Эта комбинация оставляет данные, которые вряд ли могут быть изменены при транзите через системы, такие как электронная почта, которые традиционно не являются 8-битными.

И конкретно в отношении HTTP:

Кодирование Base64 может быть полезно, когда в HTTP-среде используется довольно длинная идентификационная информация. Например, инфраструктура сохранения базы данных для объектов Java может использовать кодировку Base64 для кодирования относительно большого уникального идентификатора (как правило, 128-разрядных UUID) в строку для использования в качестве параметра HTTP в HTTP-формах или URL-адресах HTTP GET. Кроме того, многие приложения должны кодировать двоичные данные таким образом, который удобен для включения в URL-адреса, в том числе в скрытые поля веб-формы, а Base64 – это удобная кодировка, которая делает их не только компактным способом, но и относительно нечитаемым, пытаясь скрыть характер данных от случайного человеческого наблюдателя.

Протокол HTTP не гарантированно «8 бит чист», поэтому он может блокировать двоичный поток.