Глава 10. AJAX

Атака типа CSRF

Здравствуйте! В этом уроке я хотел бы рассказать о такой  атаке как  CSRF.  Ведь нельзя говорить про AJAX и не упомянуть про очень важную деталь его реализации – защиту от CSRF-атак.

CSRF (Cross-Site Request Forgery, также XSRF) – опаснейшая атака, которая приводит к тому, что злоумышленник может выполнить на сайте массу различных действий от имени других, зарегистрированных посетителей.

Какие это  могут быть действия – отправка сообщений, перевод денег со счёта на счёт или даже смена паролей – зависят от конкретного сайта, но в любом случае эта атака входит в образовательный минимум  любого веб-разработчика.

Атака csrf

Читать далее

Server Side Events — события на стороне сервера

Здравствуйте! В этом уроке я расскажу о такой технологии, как Server Side Events, которая позволяет  браузеру общаться с сервером.  Сразу  хочу заметить, что на сегодняшний день этот способ поддерживают все современные браузеры, кроме конечно же  IE и Edge.

Стандарт Server-Sent Events позволяет браузеру создавать объект EventSource, который сам устанавливает соединение с сервером, делает пересоединение в случае потери соединения и генерирует различные  события при поступлении данных.

Он  может  даже меньше, чем WebSocket’ы.

С другой стороны, Server Side Events проще в реализации, работают по протоколу HTTP и сразу поддерживают ряд возможностей, которые для WebSocket ещё надо делать.

Поэтому в случаях, когда нужна преимущественно  передача данных от сервера к браузеру в одну сторону, они могут стать удачным выбором.

server side events

Читать далее

Протокол JSONP

Здравствуйте!  От протокола Websocket перейдем к протоколу JSONP. Ведь если создать тег <script src>, то при добавлении на странице запустится процесс загрузки атрибута src. В ответ на него сервер может прислать скрипт, содержащий нужные данные.

Таким образом вы можете запрашивать данные с любого сервера и  в любом браузере.

Протокол JSONP – это собственно «надстройка» над таким способом взаимодействия с сервером. Давайте рассмотрим подробнее.

Протокол jsonp

Читать далее

Протокол WebSocket

Здравствуйте! В продолжении темы COMET с XMLHttpRequest: непрерывные опросы рассмотрим еще один вариант обмена между браузером и сервером — протокол WebSocket, который позволяет пересылать любые данные на любой домен и без всякого лишнего сетевого трафика. И давайте как всегда начнем с примеров.

Протокол Websocket

Читать далее

COMET с XMLHttpRequest: непрерывные опросы

Здравствуйте! В этом уроке мы рассмотрим способ организации COMET, то есть непрерывного  потока получения данных с сервера, который очень прост и используется в 95% случаях. Где можно использовать COMET? Наверное при частых опросах сервера, когда  надо отслеживать изменение данных и реагировать на эти изменения.

comet частые опросы

Читать далее

XMLHttpRequest и возобновляемая закачка

Здравствуйте! В этой статье я  хочу рассказать о так называемой возобновляемой закачке во время запроса файла методом XMLHttpRequest.  Ведь он  даёт возможность загружать файл как угодно: во множество потоков, с догрузкой  и прочими вариантами.

XMLHttpRequest и возобновляемая закачка

Тут же мы рассмотрим подход к организации загрузки.

Читать далее

XMLHttpRequest: стадии закачки

Здравствуйте!  В этом уроке я  хочу  рассмотреть стадии  закачки  данных при  отправке запроса методом XMLHttpRequest.  Собственно сам  запрос  состоит из 2 фаз:

  1. Стадия закачки (upload). На ней данные как  раз  загружаются на сервер. Эта фаза может быть долгой для запросов типа  POST. Для отслеживания прогресса на стадии закачки существует  XMLHttpRequestUpload, доступный как xhr.upload.
  2. Стадия скачивания (download). После того, как данные загружены, браузер должен  скачать ответ с сервера. Если он большой, то это может занять длительное время. На этой стадии надо  использовать  обработчик xhr.onprogress.

Но давайте обо все по порядку.

Читать далее

XMLHttpRequest и кросс-доменные запросы

Здравствуйте! Обычно запрос XMLHttpRequest может делать запрос только на текущий сайт. При попытке использовать иной домен – браузер выдаёт ошибку. Делается  это из соображений  безопасности,  чтобы не  было  возможности провести атаку типа XSS взлом.

Существует и современный стандарт XMLHttpRequest, он ещё правда в состоянии черновика, но предусматривает кросс-доменные запросы и многое другое.

Большинство возможностей этого стандарта уже поддерживаются всеми браузерами.

кроссдоменные запросы xmlhttprequest

Читать далее

XMLHttpRequest метод POST

Здравствуйте! В этом уроке  рассмотрим, что происходит при отправке данных  формы методом POST.

Во время отправки формы браузер собирает значения всех полей и делает из них строку, а после  составляет тело GET/POST-запроса для отсылки на сервер.

xmlhttprequest метод post отправки данных

А при отправке данных через XMLHttpRequest, это нужно делать самостоятельно, в JS-коде. Большинство проблем и вопросов  возникает как  раз  с кодировкой. Вот именно  об этих вопросах мы и  поговорим  в этой статье.

Читать далее

Основы объекта XMLHttpRequest

Здравствуйте!  Продолжаем  разбираться с AJAX  и в  этом уроке я разберу пожалуй  главный объект без которого трудно себе представить  технологию AJAX —  XMLHttpRequest (или, сокращенно  «XHR»)  он дает возможность из JavaScript делать HTTP-запросы к серверу без перезагрузки страницы, то есть это и есть AJAX.

Несмотря на,  то что в  название присутствует  слово «XML», XMLHttpRequest может работать в принципе  с любыми данными, а не только с XML.

объект xmlhttprequest

Использовать его очень просто. Давайте рассмотрим примеры.

Читать далее

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: