You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 2-ui/3-event-details/4-drag-and-drop/2-drag-heroes/task.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
<li>Элемент при переносе, даже при резких движениях мышкой, не должен попасть вне окна.</li>
15
15
</ul>
16
16
17
-
Футбольное поле в этой задач слишком большое, чтобы показывать его здесь, поэтому откройте его, кликнув по ссылке ниже. Там же и подробное описание задачи (осторожно, винни-пух и супергерои!).
17
+
Футбольное поле в этой задаче слишком большое, чтобы показывать его здесь, поэтому откройте его, кликнув по ссылке ниже. Там же и подробное описание задачи (осторожно, винни-пух и супергерои!).
Copy file name to clipboardExpand all lines: 4-ajax/13-csrf/article.md
+1-4
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Атака CSRF
2
2
3
-
Нельзя говорить про AJAX и не упомянуть про важнейшую деталь его реализации -- анти-CSRF.
3
+
Нельзя говорить про AJAX и не упомянуть про важнейшую деталь его реализации -- защиту от CSRF-атак.
4
4
5
5
[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) -- опаснейшая атака, которая приводит к тому, что хакер может выполнить на неподготовленном сайте массу различных действий от имени других, зарегистрированных посетителей.
Copy file name to clipboardExpand all lines: 4-ajax/6-xhr-onprogress/article.md
+6-4
Original file line number
Diff line number
Diff line change
@@ -118,7 +118,7 @@ function upload(file) {
118
118
119
119
Этот код отправит файл на сервер и будет сообщать о прогрессе при его закачке (`xhr.upload.onprogress`), а также об окончании запроса (`xhr.onload`, `xhr.onerror`).
120
120
121
-
Полный пример, основанный на коде выше:
121
+
Полный пример индикации прогресса при загрузке, основанный на коде выше:
122
122
123
123
[codetabs src="progress"]
124
124
@@ -158,9 +158,11 @@ function upload(file) {
158
158
159
159
Это обозначено в [спецификации progress notifications](http://www.w3.org/TR/XMLHttpRequest/#make-progress-notifications).
160
160
</li>
161
-
<li>**В процессе получения данных, ещё до их полной передачи, доступен `xhr.responseText`.**
161
+
<li>**В процессе получения данных, ещё до их полной передачи, доступен `xhr.responseText`, но он не обязательно содержит корректную строку.**
162
162
163
-
Можно до окончания запроса заглянуть в него и прочитать текущие полученные данные. Важно, что при пересылке строки в кодировке UTF-8 русские символы кодируются 2 байтами. Возможно, что в конце одного пакета данных окажется первая половинка символа, а в начале следующего -- вторая. Поэтому полагаться на то, что до окончания запроса в `responoseText` находится корректная строка нельзя. Исключение -- заведомо однобайтные символы, например цифры.</li>
163
+
Можно до окончания запроса заглянуть в него и прочитать текущие полученные данные. Важно, что при пересылке строки в кодировке UTF-8 кириллические символы, как, впрочем, и многие другие, кодируются 2 байтами. Возможно, что в конце одного пакета данных окажется первая половинка символа, а в начале следующего -- вторая. Поэтому полагаться на то, что до окончания запроса в `responoseText` находится корректная строка нельзя. Она может быть обрезана посередине символа.
164
+
165
+
Исключение -- заведомо однобайтные символы, например цифры или латинница.</li>
164
166
<li>**Сработавшее событие `xhr.upload.onprogress` не гарантирует, что данные дошли.**
165
167
166
168
Событие `xhr.upload.onprogress` срабатывает, когда данные отправлены браузером. Но оно не гарантирует, что сервер получил, обработал и записал данные на диск. Он говорит лишь о самом факте отправки.
Данные будут отправлены в кодировке `multipart/form-data`. Серверный фреймворк увидит это как обычную форму с файлом. Практически все серверные технологии имеют их встроенную поддержку.
190
+
Данные будут отправлены в кодировке `multipart/form-data`. Серверный фреймворк увидит это как обычную форму с файлом, практически все серверные технологии имеют их встроенную поддержку. Индикация прогресса реализуется точно так же.
0 commit comments