From 7fccd9546e89642ff4601cec9366f2f39882a225 Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Sat, 2 May 2015 13:42:52 +0300 Subject: [PATCH] minor --- .../4-drag-and-drop/2-drag-heroes/task.md | 2 +- 4-ajax/13-csrf/article.md | 5 +---- 4-ajax/6-xhr-onprogress/article.md | 10 ++++++---- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/task.md b/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/task.md index 288aa10f..f87efbc2 100644 --- a/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/task.md +++ b/2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/task.md @@ -14,7 +14,7 @@
  • Элемент при переносе, даже при резких движениях мышкой, не должен попасть вне окна.
  • -Футбольное поле в этой задач слишком большое, чтобы показывать его здесь, поэтому откройте его, кликнув по ссылке ниже. Там же и подробное описание задачи (осторожно, винни-пух и супергерои!). +Футбольное поле в этой задаче слишком большое, чтобы показывать его здесь, поэтому откройте его, кликнув по ссылке ниже. Там же и подробное описание задачи (осторожно, винни-пух и супергерои!). [demo src="solution"] diff --git a/4-ajax/13-csrf/article.md b/4-ajax/13-csrf/article.md index 30027b6c..53fba358 100644 --- a/4-ajax/13-csrf/article.md +++ b/4-ajax/13-csrf/article.md @@ -1,6 +1,6 @@ # Атака CSRF -Нельзя говорить про AJAX и не упомянуть про важнейшую деталь его реализации -- анти-CSRF. +Нельзя говорить про AJAX и не упомянуть про важнейшую деталь его реализации -- защиту от CSRF-атак. [CSRF](http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2) (Cross-Site Request Forgery, также XSRF) -- опаснейшая атака, которая приводит к тому, что хакер может выполнить на неподготовленном сайте массу различных действий от имени других, зарегистрированных посетителей. @@ -136,6 +136,3 @@ if (csrfCookie) { -Чтобы - - diff --git a/4-ajax/6-xhr-onprogress/article.md b/4-ajax/6-xhr-onprogress/article.md index 07f532c9..564eec0b 100644 --- a/4-ajax/6-xhr-onprogress/article.md +++ b/4-ajax/6-xhr-onprogress/article.md @@ -118,7 +118,7 @@ function upload(file) { Этот код отправит файл на сервер и будет сообщать о прогрессе при его закачке (`xhr.upload.onprogress`), а также об окончании запроса (`xhr.onload`, `xhr.onerror`). -Полный пример, основанный на коде выше: +Полный пример индикации прогресса при загрузке, основанный на коде выше: [codetabs src="progress"] @@ -158,9 +158,11 @@ function upload(file) { Это обозначено в [спецификации progress notifications](http://www.w3.org/TR/XMLHttpRequest/#make-progress-notifications). -
  • **В процессе получения данных, ещё до их полной передачи, доступен `xhr.responseText`.** +
  • **В процессе получения данных, ещё до их полной передачи, доступен `xhr.responseText`, но он не обязательно содержит корректную строку.** -Можно до окончания запроса заглянуть в него и прочитать текущие полученные данные. Важно, что при пересылке строки в кодировке UTF-8 русские символы кодируются 2 байтами. Возможно, что в конце одного пакета данных окажется первая половинка символа, а в начале следующего -- вторая. Поэтому полагаться на то, что до окончания запроса в `responoseText` находится корректная строка нельзя. Исключение -- заведомо однобайтные символы, например цифры.
  • +Можно до окончания запроса заглянуть в него и прочитать текущие полученные данные. Важно, что при пересылке строки в кодировке UTF-8 кириллические символы, как, впрочем, и многие другие, кодируются 2 байтами. Возможно, что в конце одного пакета данных окажется первая половинка символа, а в начале следующего -- вторая. Поэтому полагаться на то, что до окончания запроса в `responoseText` находится корректная строка нельзя. Она может быть обрезана посередине символа. + +Исключение -- заведомо однобайтные символы, например цифры или латинница.
  • **Сработавшее событие `xhr.upload.onprogress` не гарантирует, что данные дошли.** Событие `xhr.upload.onprogress` срабатывает, когда данные отправлены браузером. Но оно не гарантирует, что сервер получил, обработал и записал данные на диск. Он говорит лишь о самом факте отправки. @@ -185,5 +187,5 @@ formData.append("myfile", file); xhr.send(formData); ``` -Данные будут отправлены в кодировке `multipart/form-data`. Серверный фреймворк увидит это как обычную форму с файлом. Практически все серверные технологии имеют их встроенную поддержку. +Данные будут отправлены в кодировке `multipart/form-data`. Серверный фреймворк увидит это как обычную форму с файлом, практически все серверные технологии имеют их встроенную поддержку. Индикация прогресса реализуется точно так же.