[{"data":1,"prerenderedAt":1513},["ShallowReactive",2],{"$f7KQGX6xpWfCST7qcp3-MN6_Grc3LN2jOm01ZKl-armI":3,"$fMMUdSFktwQFqMVGPrTtt3EC5yheBp7PzwIqznamFcMo":149,"$fc0LoAJgqXDLbKKd2JS_NpM4SuzBK8EycUXINSg09CKU":152,"$fM3ea55k6lKMPOTM84llDB26VSQDVVbxiQuSBFQw9P_c":157,"$f1Prj1xEczHja_-L7FyIGgRHd5_cSWHo7r6AE5aheAik":502,"$fI5fDmvm-5tr9wcH0eHaKZa1j3y_FQIQaHHPqbZxAHJE":724,"mdc--mcetfi-key":744,"mdc-93vrlr-key":756,"mdc--ueambb-key":764,"mdc-kbrn2q-key":782,"mdc-8gsm2v-key":799,"mdc--mqgk1y-key":807,"mdc-vxq9f0-key":815,"mdc--8lgw19-key":830,"mdc-dwdrf1-key":852,"mdc--k5s7ps-key":868,"mdc--joa0ue-key":903,"mdc--8lwenh-key":1108,"mdc--t4864z-key":1124,"mdc--z5ny4j-key":1133,"mdc--vv40dm-key":1195,"mdc--c3vey1-key":1217,"mdc--u6tb4w-key":1270,"mdc--m1290o-key":1287,"mdc--nq7rx8-key":1320,"mdc-o3obfx-key":1333,"mdc-fqe7ts-key":1346,"mdc-6d4i46-key":1359,"mdc--usyp1z-key":1367,"mdc-4pfsq7-key":1400,"mdc--jw73ej-key":1496,"mdc-9yrjkz-key":1505},{"content":4,"quizQuestionContent":119,"type":138,"pageMeta":139},[5,9,13,16,20,24,27,31,34,38,41,44,48,51,55,58,62,65,68,72,75,79,82,86,89,93,96,99,103,106,110,113,116],{"id":6,"value":7,"isTypeH1":8},"1956","Параметры в HTTP: виды, синтаксис, кодирование",true,{"id":10,"value":11,"anchor":12,"isTypeH2":8},"4557","Что такое параметры в HTTP","what-are-parameters-in-http",{"id":14,"value":15,"isTypeParagraph":8},"10469","Параметры в HTTP — это данные, передаваемые вместе с HTTP-запросом/ответом, которые уточняют **контекст** операции: какой ресурс запрашивается, в каком формате, с какими ограничениями, а также какая дополнительная информация нужна серверу или клиенту.  \nСтрого говоря, слово «параметры» не является официальным термином спецификации HTTP: на практике под ним понимаются разные «носители данных» в сообщении HTTP (части URI, заголовки, cookie, тело), и каждый носитель имеет собственные правила синтаксиса и обработки.",{"id":17,"description":18,"titleAlert":19,"isTypeAlertInfo":8},"695","В веб-разработке под «параметрами» чаще всего подразумеваются значения из строки запроса URI (query string, часть после `?`), однако в реальных приложениях не менее важны параметры маршрута (path params), заголовки и тело запроса.",null,{"id":21,"value":22,"anchor":23,"isTypeH2":8},"4558","Где «живут» параметры","where-parameters-live",{"id":25,"value":26,"isTypeParagraph":8},"10470","В HTTP-сообщении параметры могут находиться в нескольких местах, и выбор места влияет на кэширование, логирование, безопасность и удобство обработки.  \nURI по общей грамматике может содержать опциональную часть `?query` (строку запроса): `URI = scheme \":\" hier-part [ \"?\" query ] [ \"#\" fragment ]`.  \nВ HTTP также существуют заголовки и (опционально) содержимое сообщения (content), смысл которого определяется семантикой метода (например, POST/PUT).",{"id":28,"value":29,"anchor":30,"isTypeH3":8},"4578","Основные типы параметров","main-parameter-types",{"id":32,"value":33,"isTypeParagraph":8},"10471","| Где находятся | Как выглядят | Типичные примеры | Что важно помнить |\n|---|---|---|---|\n| Path params (в пути) | `/users/42/orders/7` | идентификаторы ресурсов, «иерархия» | обычно участвуют в идентификации ресурса; чаще удобны для обязательных частей |\n| Query params (в query string) | `?page=2&sort=price` | фильтры, пагинация, сортировка | `?` и `&` являются разделителями, данные требуют корректного кодирования |\n| Заголовки (headers) | `Accept: application/json` | формат ответа, авторизация, трассировка | не являются частью URI; удобно для метаданных запроса |\n| Cookie | `Cookie: SID=...; lang=...` | сессии, настройки | cookie передаются заголовком `Cookie`, устанавливаются `Set-Cookie` |\n| Тело (body/content) | JSON, form, multipart | создание/изменение сущностей | смысл тела зависит от метода, а формат — от `Content-Type` |",{"id":35,"value":36,"anchor":37,"isTypeH3":8},"4579","Схема HTTP-запроса","http-request-scheme",{"id":39,"value":40,"isTypeParagraph":8},"10472","```\n(1) request line / pseudo-headers (HTTP/2, HTTP/3)\n    METHOD SP REQUEST-TARGET\n\n(2) headers\n    Header-Name: value\n    Header-Name: value\n    Cookie: name=value; name2=value2\n\n(3) empty line (HTTP/1.1)\n\n(4) content (optional)\n    bytes... (JSON / form / multipart / etc.)\n```",{"id":42,"description":43,"titleAlert":19,"isTypeAlertWarning":8},"763","Передача чувствительных данных (пароли, токены, персональные данные) в query string считается рискованной практикой, поскольку URI часто попадает в логи, историю браузера, рефереры и кэши.\n",{"id":45,"value":46,"anchor":47,"isTypeH2":8},"4559","Query string и кодирование","query-string-and-encoding",{"id":49,"value":50,"isTypeParagraph":8},"10473","Строка запроса (query) — это часть URI после `?`, синтаксически отделённая от пути и фрагмента.  \nВ URI зарезервированные символы (например, `?`, `&`, `=`, `#`) могут играть роль разделителей, поэтому при использовании этих символов как данных требуется percent-encoding (механизм `%HH`).  \nДекодирование и парсинг необходимо выполнять аккуратно: некорректная двойная кодировка/декодировка может менять смысл данных и приводить к ошибкам обработки.",{"id":52,"value":53,"anchor":54,"isTypeH3":8},"4580","Пример URI с query-параметрами","example-uri-with-query-parameters",{"id":56,"value":57,"isTypeParagraph":8},"10474","`https://example.com/products?category=books&sort=price&page=2`\n\n```\nпример: фильтры, сортировка и пагинация\n\nGET /products?category=books&sort=price&page=2 HTTP/1.1\nHost: example.com\nAccept: application/json\n```",{"id":59,"value":60,"anchor":61,"isTypeH3":8},"4581","Пример работы с URLSearchParams","urlsearchparams-example",{"id":63,"value":64,"isTypeParagraph":8},"10475","Интерфейс `URLSearchParams` предназначен для работы со строкой запроса URL и считается современным подходом в экосистеме WHATWG URL; в Node.js традиционный модуль `querystring` часто рассматривается как устаревающий по сравнению с `URLSearchParams`.  \nТакже важно учитывать различия кодирования пробелов: в query-параметрах пробел может интерпретироваться как `+` в некоторых реализациях, что может отличаться от ожиданий при «сыром» percent-encoding.\n\n```\nconst url = new URL('https://example.com/search?q=hello+world&tag=js&tag=http');\nconst q = url.searchParams.get('q');          // \"hello world\"\nconst tags = url.searchParams.getAll('tag');  // [\"js\", \"http\"]\n\nurl.searchParams.set('page', '2');\nurl.searchParams.delete('tag');\n\nconst newUrl = url.toString();\n```",{"id":66,"description":67,"titleAlert":19,"isTypeAlertInfo":8},"696","Множественные значения одного ключа (например, `tag=js&tag=http`) являются распространённой практикой; при проектировании API требуется заранее определить, допускается ли массив значений, и как он интерпретируется на сервере.",{"id":69,"value":70,"anchor":71,"isTypeH2":8},"4560","Заголовки, cookie и тело запроса","headers-cookies-and-body",{"id":73,"value":74,"isTypeParagraph":8},"10476","Заголовки (headers) используются для метаданных: форматы, согласование содержимого, авторизация, идентификаторы корреляции и т. п.; они не являются частью URI и обычно не участвуют в «адресации» ресурса.  \nCookie — это механизм управления состоянием поверх в основном stateless-природы HTTP; на практике используются заголовки `Set-Cookie` (сервер → клиент) и `Cookie` (клиент → сервер).  \nСодержимое (content) HTTP-сообщения — поток байтов после заголовков; назначение содержимого в запросе определяется семантикой метода (например, PUT — желаемое состояние ресурса, POST — данные для обработки).",{"id":76,"value":77,"anchor":78,"isTypeH3":8},"4582","Примеры: headers, cookie, JSON body","examples-headers-cookie-json-body",{"id":80,"value":81,"isTypeParagraph":8},"10477","```\nPOST /api/orders HTTP/1.1\nHost: example.com\nContent-Type: application/json\nAccept: application/json\nAuthorization: Bearer \u003Ctoken>\nCookie: SID=31d4d96e407aad42; lang=ru-RU\n\n{\n  \"items\": [\n    { \"sku\": \"book-123\", \"qty\": 2 },\n    { \"sku\": \"pen-9\", \"qty\": 1 }\n  ],\n  \"delivery\": { \"city\": \"Moscow\", \"type\": \"pickup\" }\n}\n```",{"id":83,"value":84,"anchor":85,"isTypeH3":8},"4583","Пример: form-urlencoded","example-form-urlencoded",{"id":87,"value":88,"isTypeParagraph":8},"10478","```\nPOST /login HTTP/1.1\nHost: example.com\nContent-Type: application/x-www-form-urlencoded\n\nusername=alice&password=secret\n```\n",{"id":90,"value":91,"anchor":92,"isTypeH3":8},"4584","Пример: multipart/form-data (файл + поля)","example-multipart-form-data",{"id":94,"value":95,"isTypeParagraph":8},"10479","```\nPOST /upload HTTP/1.1\nHost: example.com\nContent-Type: multipart/form-data; boundary=----abc\n\n------abc\nContent-Disposition: form-data; name=\"title\"\n\nMy file\n------abc\nContent-Disposition: form-data; name=\"file\"; filename=\"a.txt\"\nContent-Type: text/plain\n\nhello\n------abc--\n```",{"id":97,"description":98,"titleAlert":19,"isTypeAlertWarning":8},"764","Cookie и заголовки могут быть изменены клиентом так же, как и query/body; доверять данным без серверной валидации нельзя.",{"id":100,"value":101,"anchor":102,"isTypeH2":8},"4561","Практика: выбор места параметров","practice-where-to-put-parameters",{"id":104,"value":105,"isTypeParagraph":8},"10480","Для обязательных частей идентификации ресурса обычно выбираются path params (например, `/users/42`), так как они задают «какой именно объект» запрашивается.  \nДля необязательных модификаторов выборки (фильтр, сортировка, пагинация, диапазоны) обычно выбираются query params, так как они естественно описывают «как интерпретировать запрос к тому же ресурсу».  \nДля больших структур данных, чувствительных значений и данных, которые не должны быть частью URI, обычно выбирается тело запроса (например, JSON), а формат задаётся `Content-Type`.",{"id":107,"value":108,"anchor":109,"isTypeH3":8},"4585","Типичные правила проектирования","typical-design-rules",{"id":111,"value":112,"isTypeParagraph":8},"10481","- Следует помещать идентификаторы ресурса в путь: `/products/123`, `/users/42/orders`.  \n- Следует помещать параметры выборки в query: `?limit=20&offset=40&sort=-createdAt`.  \n- Следует помещать команды и сложные структуры в тело запроса (особенно для POST/PUT/PATCH): JSON-объекты, списки, вложенность.  \n- Следует использовать заголовки для метаданных передачи: `Accept`, `Content-Type`, `Authorization`, `If-None-Match` и т. п.  \n- Следует использовать cookie для сессионного состояния и настроек, когда это обосновано; передача идёт через `Set-Cookie`/`Cookie`.",{"id":114,"description":115,"titleAlert":19,"isTypeAlertInfo":8},"697","Иногда обсуждаются альтернативы «передачи сложного запроса через URL» для специфических сценариев (например, безопасный запрос с телом), однако совместимость и поддержка зависят от инфраструктуры и выбранных стандартов.\n",{"id":117,"value":118,"isTypeParagraph":8},"10482","Итого: параметры в HTTP — это не один конкретный механизм, а набор способов передать данные в разных частях HTTP-сообщения (URI: path/query, headers, cookies, body); место размещения определяет синтаксис, кодирование, семантику и риски.",{"id":120,"options":121,"hint":135,"solution":136,"description":137},"1185",[122,126,129,132],{"id":123,"label":124,"isCorrect":125},"4884","Параметры в HTTP — это любые данные, передаваемые только в теле запроса; строка запроса и cookie не используются для параметров, потому что они всегда запрещены стандартом HTTP.",false,{"id":127,"label":128,"isCorrect":125},"4885","Параметры в HTTP — это исключительно заголовки вида `X-Param-*`, которые сервер обязан обрабатывать по спецификации; любые значения в URI и теле не относятся к параметрам и игнорируются промежуточными узлами.  ",{"id":130,"label":131,"isCorrect":125},"4886","Параметры в HTTP — это только значения после `?` в адресной строке; заголовки и тело запроса параметрами не считаются и никак не относятся к передаче данных в HTTP.",{"id":133,"label":134,"isCorrect":8},"4887","Параметры в HTTP — это дополнительные данные, передаваемые вместе с запросом/ответом; они могут находиться в URI (path/query), заголовках, cookie и теле сообщения, причём правила синтаксиса и кодирования зависят от места расположения.","Следует мысленно разложить запрос на части: request target (URI), headers и content, а затем перечислить, какие «поля ввода» для сервера получаются из каждой части (path/query, заголовки, cookie, тело).","**Правильный ответ: 4** - Параметры в HTTP — это дополнительные данные, передаваемые вместе с запросом/ответом; они могут находиться в URI (path/query), заголовках, cookie и теле сообщения, причём правила синтаксиса и кодирования зависят от места расположения.","Что такое параметры в HTTP?","quizQuestion",{"title":137,"description":140,"ogTitle":141,"ogDescription":140,"ogImageUrl":142,"canonical":19,"ogLocale":143,"ogSiteName":144,"ogImageType":145,"ogImageWidth":146,"ogImageHeight":147,"ogType":148,"ogUrl":19},"Подробно о параметрах HTTP: query, path, headers, cookies, body; кодирование, примеры запросов, типичные ошибки и безопасность.","Параметры в HTTP: виды, передача, кодирование","/og-image.png","ru_RU","goodwebjob.ru","image_jpeg","1200","630","article",{"siteName":150,"siteUrl":151},"GOOD WEB JOB!","https://goodwebjob.ru",[153],{"label":154,"slug":155,"to":156},"Подготовка к тех.интервью","technical-interview","/technical-interview/where-to-begin",{"navigationList":158,"navigationSublist":166},[159,162],{"path":156,"isActive":125,"name":160,"icon":161,"isNavbarMobileDisabled":8},"С чего начать?","material-symbols:visibility-outline-rounded",{"path":163,"isActive":8,"name":164,"icon":165,"isNavbarMobileDisabled":125},"/technical-interview/tasks","Сборник задач","material-symbols:task-outline",[167,176,203,215,221,362,386,395,401,463,484,490],{"title":168,"list":169,"isOpened":125},"Bash",[170,173],{"name":171,"path":172,"isActive":125},"Дан фрагмент bash-скрипта: cd ~; mkdir foo... Что в нем происходит?","/technical-interview/tasks/here-is-a-fragment-of-a-bash-script-cd-mkdir-foo-what-is-happening-in-this-script",{"name":174,"path":175,"isActive":125},"Дан фрагмент bash-скрипта: target=$(ps -Af | grep $1 | head -n 1)...","/technical-interview/tasks/here-is-a-fragment-of-a-bash-script-target-ps-af-grep-1-head-n-1",{"title":177,"list":178,"isOpened":125},"CSS",[179,182,185,188,191,194,197,200],{"name":180,"path":181,"isActive":125},"Дан HTML-код. Какой будет цвет у текста «Some dummy text»?","/technical-interview/tasks/the-html-code-is-given-what-will-be-the-color-of-the-some-dummy-text",{"name":183,"path":184,"isActive":125},"Есть шаблон HTML и CSS кода. Какой будет цвет у текста «Таким образом, постоянное»?","/technical-interview/tasks/there-is-a-template-for-html-and-css-code-what-color-will-the-text-thus-constant-have",{"name":186,"path":187,"isActive":125},"Есть шаблон вложенного HTML кода. Какой будет цвет у текста «One more dummy text»?","/technical-interview/tasks/there-is-a-template-for-embedded-html-code-what-will-be-the-color-of-the-one-more-dummy-text",{"name":189,"path":190,"isActive":125},"Есть шаблон вложенного HTML кода. Будет ли display:block у body влиять на span?","/technical-interview/tasks/there-is-a-template-for-embedded-html-code-will-there-be-a-display-does-bodys-block-affect-span",{"name":192,"path":193,"isActive":125},"Есть HTML код. Будет ли font-weight на span влиять?","/technical-interview/tasks/there-is-an-html-code-will-font-weight-affect-span",{"name":195,"path":196,"isActive":125},"Flexbox и Grid, чем отличаются друг от друга?","/technical-interview/tasks/what-are-the-differences-between-flexbox-and-grid",{"name":198,"path":199,"isActive":125},"Заменяют ли Flexbox и Grid друг друга?","/technical-interview/tasks/do-flexbox-and-grid-replace-each-other",{"name":201,"path":202,"isActive":125},"Есть CSS и JS анимация. Какая между ними разница, что быстрее, что более удобно?","/technical-interview/tasks/there-are-css-and-js-animations-what-is-the-difference-between-them-and-which-is-faster-and-more-convenient",{"title":204,"list":205,"isOpened":125},"Git",[206,209,212],{"name":207,"path":208,"isActive":125},"Разрабатывал, взял закоммитил, запушил. Оказалось, что запушил не в ту ветку, точнее, коммит не в ту ветку. Какие действия?","/technical-interview/tasks/developed-it-committed-it-and-launched-it-it-turned-out-that-i-had-pushed-it-to-the-wrong-branch-or-rather-the-commit-was-in-the-wrong-branch-what-actions",{"name":210,"path":211,"isActive":125},"В git есть несколько вариантов слияния веток, какие? Чем отличаются?","/technical-interview/tasks/git-has-several-options-for-merging-branches-which-ones-how-are-they-different",{"name":213,"path":214,"isActive":125},"Какие существуют стратегии ветвления для работы команды? Что это такое?","/technical-interview/tasks/what-are-the-branching-strategies-for-the-team-what-is-it",{"title":216,"list":217,"isOpened":125},"HTML",[218],{"name":219,"path":220,"isActive":125},"Что такое HTML?","/technical-interview/tasks/what-is-html",{"title":222,"list":223,"isOpened":125},"JavaScript",[224,227,230,233,236,239,242,245,248,251,254,257,260,263,266,269,272,275,278,281,284,287,290,293,296,299,302,305,308,311,314,317,320,323,326,329,332,335,338,341,344,347,350,353,356,359],{"name":225,"path":226,"isActive":125},"Какие логические значения в console.log будут получены?","/technical-interview/tasks/prototype-what-logical-values-will-be-received-in-console-log",{"name":228,"path":229,"isActive":125},"Почему опасно писать прямо в прототипы базовых типов?","/technical-interview/tasks/why-is-it-dangerous-to-write-directly-to-the-prototypes-of-basic-types",{"name":231,"path":232,"isActive":125},"Что вернёт следующий код? Object.create(null).hasOwnProperty('toString')","/technical-interview/tasks/what-will-the-following-code-return-object-create-null-has-own-property-to-string",{"name":234,"path":235,"isActive":125},"Какое значение выведет консоль с object.property?","/technical-interview/tasks/what-value-will-the-console-output-with-object-property",{"name":237,"path":238,"isActive":125},"Что выведется в console.log([arr[0](), arr[0]()])?","/technical-interview/tasks/what-will-be-displayed-in-console-log-arr-0-arr-0",{"name":240,"path":241,"isActive":125},"Что выведет console.log в результате выполнения цикла while?","/technical-interview/tasks/what-will-console-log-output-as-a-result-of-executing-the-while-loop",{"name":243,"path":244,"isActive":125},"Есть функция и объект. Напишите все известные вам способы, чтобы вывести в консоли значение x из объекта, используя функцию","/technical-interview/tasks/there-is-a-function-and-an-object-write-all-the-ways-you-know-to-output-the-value-of-x-from-an-object-in-the-console-using-the-function",{"name":246,"path":247,"isActive":125},"Что вернёт метод book.getUpperName()?","/technical-interview/tasks/what-will-the-book-get-upper-name-method-return",{"name":249,"path":250,"isActive":125},"Переменные объявлены следующим образом: a=3; b=«hello»;. Укажите правильное утверждение","/technical-interview/tasks/variables-are-declared-as-follows-specify-the-correct-statement",{"name":252,"path":253,"isActive":125},"Что выведет консоль в случае присвоения свойства массиву по строковому положительному индексу?","/technical-interview/tasks/what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-positive-string-index",{"name":255,"path":256,"isActive":125},"Что выведет консоль в случае присвоения свойства массиву по строковому отрицательному индексу?","/technical-interview/tasks/what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-negative-string-index",{"name":258,"path":259,"isActive":125},"Что выведет консоль в случае удаления элемента массива с помощью оператора delete?","/technical-interview/tasks/what-will-the-console-output-if-an-array-element-is-deleted-using-the-delete-operator",{"name":261,"path":262,"isActive":125},"Что вернёт этот код: typeof (function(){})()","/technical-interview/tasks/what-this-code-will-return-typeof-function",{"name":264,"path":265,"isActive":125},"Что получится в результате передачи объекта как аргумента в функцию и выполнения кода?","/technical-interview/tasks/what-will-happen-when-an-object-is-passed-as-an-argument-to-a-function-and-the-code-is-executed",{"name":267,"path":268,"isActive":125},"Какие способы объявления функции есть в JavaScript?","/technical-interview/tasks/what-are-the-ways-to-declare-a-function-in-javascript",{"name":270,"path":271,"isActive":125},"Что такое this в JavaScript?","/technical-interview/tasks/what-is-this-in-javascript",{"name":273,"path":274,"isActive":125},"Что такое Event Loop, как работает?","/technical-interview/tasks/what-is-an-event-loop-and-how-does-it-work",{"name":276,"path":277,"isActive":125},"Что будет, если вызвать typeof на необъявленной переменной?","/technical-interview/tasks/what-happens-if-you-call-typeof-on-an-undeclared-variable",{"name":279,"path":280,"isActive":125},"Что показывает оператор typeof в JavaScript?","/technical-interview/tasks/what-does-the-typeof-operator-show-in-javascript",{"name":282,"path":283,"isActive":125},"Какие типы данных существует в JavaScript?","/technical-interview/tasks/what-types-of-data-exist-in-javascript",{"name":285,"path":286,"isActive":125},"Какую структуру использовать для хранения упорядоченного списка строк в JavaScript?","/technical-interview/tasks/what-is-the-best-structure-to-use-for-storing-an-ordered-list-of-strings-in-javascript",{"name":288,"path":289,"isActive":125},"Что вернет typeof для массива?","/technical-interview/tasks/what-will-typeof-return-for-an-array",{"name":291,"path":292,"isActive":125},"Почему оператор typeof, применённый к массиву, возвращает объект?","/technical-interview/tasks/why-does-the-typeof-operator-applied-to-an-array-return-an-object",{"name":294,"path":295,"isActive":125},"Если нужно хранить список уникальных строк, какую структуру данных выбрать?","/technical-interview/tasks/if-you-need-to-store-a-list-of-unique-strings-which-data-structure-should-i-choose",{"name":297,"path":298,"isActive":125},"Что возвращает typeof для new Set в JavaScript?","/technical-interview/tasks/what-does-typeof-return-for-new-set-in-javascript",{"name":300,"path":301,"isActive":125},"Почему в JavaScript два объекта с одинаковым содержимым при сравнении возвращают false?","/technical-interview/tasks/why-do-two-objects-with-the-same-content-return-false-when-compared-in-javascript",{"name":303,"path":304,"isActive":125},"В чем разница между микро- и макро-тасками в JavaScript?","/technical-interview/tasks/what-is-the-difference-between-micro-and-macro-tasks-in-javascript",{"name":306,"path":307,"isActive":125},"arr.push(0) повлияет на массив так же, как если бы мы выполнили...","/technical-interview/tasks/arr-push-0-will-affect-the-array-in-the-same-way-as-if-we-performed",{"name":309,"path":310,"isActive":125},"Вернуть массив от 1 до n, где числа, кратные 3, заменены на 'fizz', кратные 5 - на 'buzz', а кратные и 3, и 5 одновременно - на 'fizzbuzz'","/technical-interview/tasks/returns-an-array-from-1-to-n-replacing-numbers-that-are-multiples-of-3-with-fizz-numbers-that-are-multiples-of-5-with-buzz-and-numbers-that-are-multiples-of-both-3-and-5-with-fizzbuzz",{"name":312,"path":313,"isActive":125},"Дана строка: 'one.two.three.four.five'. Необходимо из строки сделать вложенный объект","/technical-interview/tasks/the-string-one-two-three-four-five-is-given-it-is-necessary-to-make-a-nested-object-out-of-the-string",{"name":315,"path":316,"isActive":125},"Дано дерево (вложенный объект), надо найти сумму всех вершин","/technical-interview/tasks/given-a-tree-nested-object-it-is-necessary-to-find-the-sum-of-all-vertices",{"name":318,"path":319,"isActive":125},"Для каждого вложенного объекта нужно добавить свойство level, которое равняется числу - номер вложенности","/technical-interview/tasks/for-each-nested-object-you-need-to-add-the-level-property-which-is-equal-to-a-number-the-nesting-number",{"name":321,"path":322,"isActive":125},"Для каждой ветви дерева записать номер вложенности данной ветви","/technical-interview/tasks/for-each-branch-of-the-tree-write-down-the-nesting-number-of-this-branch",{"name":324,"path":325,"isActive":125},"Есть массив, в котором лежат объекты с датами, необходимо отсортировать даты по возрастанию","/technical-interview/tasks/there-is-an-array-containing-objects-with-dates-that-need-to-be-sorted-by-date",{"name":327,"path":328,"isActive":125},"Есть слова в массиве, необходимо определить, состоят ли они из одних и тех же букв","/technical-interview/tasks/there-are-words-in-the-array-it-is-necessary-to-determine-whether-they-consist-of-the-same-letters",{"name":330,"path":331,"isActive":125},"Есть строка, состоящая из разных скобок, необходимо проверить, закрыты ли все","/technical-interview/tasks/there-is-a-string-consisting-of-different-brackets-it-is-necessary-to-check-whether-all-are-closed",{"name":333,"path":334,"isActive":125}," Найти в массиве неповторяющиеся числа","/technical-interview/tasks/find-non-repeating-numbers-in-an-array",{"name":336,"path":337,"isActive":125},"Напишите функцию, который сделает из массива объект","/technical-interview/tasks/write-a-function-that-will-make-an-object-out-of-an-array",{"name":339,"path":340,"isActive":125},"Необходимо проверить, являются ли две строки анаграммами друг друга","/technical-interview/tasks/checks-whether-two-strings-are-anagrams-of-each-other",{"name":342,"path":343,"isActive":125},"Нечётные числа должны отсортироваться по возрастанию, а чётные должны остаться на своих местах","/technical-interview/tasks/odd-numbers-should-be-sorted-in-ascending-order-and-even-numbers-should-remain-in-their-original-positions",{"name":345,"path":346,"isActive":125},"Определить, является ли слово палиндромом","/technical-interview/tasks/determines-whether-a-word-is-a-palindrome",{"name":348,"path":349,"isActive":125},"«Расплющивание» массива","/technical-interview/tasks/flattening-the-array",{"name":351,"path":352,"isActive":125},"Реализовать функцию, принимающую аргументы \"*\", \"1\", \"b\", \"1c\" и возвращающую строку \"1*b*1c\"","/technical-interview/tasks/implement-a-function-that-accepts-arguments-1-b-1c-and-the-return-string-1-b-1c",{"name":354,"path":355,"isActive":125},"Сжатие строк","/technical-interview/tasks/string-compression",{"name":357,"path":358,"isActive":125},"Уникализация значений в массиве","/technical-interview/tasks/unifying-values-in-an-array",{"name":360,"path":361,"isActive":125},"Числа от 1 до 100 находятся в массиве, они хаотично перемешанные, но в нём не хватает одного числа из этой последовательности. Необходимо найти его","/technical-interview/tasks/the-numbers-from-1-to-100-are-in-the-array-they-are-randomly-mixed-but-it-lacks-one-number-from-this-sequence-it-is-necessary-to-find-him",{"title":363,"list":364,"isOpened":125},"React",[365,368,371,374,377,380,383],{"name":366,"path":367,"isActive":125},"Для чего нужен React, какие он решает проблемы?","/technical-interview/tasks/what-is-react-used-for-and-what-problems-does-it-solve",{"name":369,"path":370,"isActive":125},"Какой механизм лежит в основе оптимизации обновлений DOM в React?","/technical-interview/tasks/what-is-the-underlying-mechanism-for-optimizing-dom-updates-in-react",{"name":372,"path":373,"isActive":125},"Если убрать в React VDOM/Fiber, и вручную изменять DOM, разве это не оптимально?","/technical-interview/tasks/if-you-remove-the-vdom-fiber-in-react-and-manually-change-the-dom-isn-t-that-optimal",{"name":375,"path":376,"isActive":125},"Есть блок кода. Что в реальном DOM изменится после нажатия на кнопку?","/technical-interview/tasks/there-is-a-block-of-code-what-changes-in-the-real-dom-after-clicking-the-button",{"name":378,"path":379,"isActive":125},"Есть код, в котором список и кнопка. Что в реальном DOM изменится после нажатия на кнопку?","/technical-interview/tasks/there-is-a-code-in-which-there-is-a-list-and-a-button-what-will-change-in-the-real-dom-after-clicking-on-the-button",{"name":381,"path":382,"isActive":125},"Зачем нужен Redux (Mobx/Effector)? Зачем нужен менеджер состояния? Какие проблемы решает?","/technical-interview/tasks/why-do-we-need-redux-mobx-effector-why-do-we-need-a-state-manager-what-problems-does-it-solve",{"name":384,"path":385,"isActive":125},"Что мешает организовать централизованное состояние без менеджера состояния? Если организовать состояние механизмами реакта: контекстом, стейтом, в чем проблема? Что менеджеры состояния привносят?","/technical-interview/tasks/what-prevents-you-from-organizing-a-centralized-state-without-a-state-manager-if-you-organize-the-state-using-react-context-and-state-mechanisms-what-is-the-problem-what-do-state-managers-add",{"title":387,"list":388,"isOpened":125},"Алгоритмы",[389,392],{"name":390,"path":391,"isActive":125},"Что такое алгоритмическая сложность?","/technical-interview/tasks/what-is-algorithmic-complexity",{"name":393,"path":394,"isActive":125},"Какая алгоритмическая сложность у \"быстрой сортировки\"?","/technical-interview/tasks/what-is-the-algorithmic-complexity-of-quick-sort",{"title":396,"list":397,"isOpened":125},"Дебаггинг",[398],{"name":399,"path":400,"isActive":125},"Как диагностировать и исправить нежелательное изменение цвета фона по клику на кнопку, если исходный код сайта запутан и недоступен для прямого чтения?","/technical-interview/tasks/how-can-diagnose-and-fix-unwanted-background-color-changes-when-clicking-on-a-button-if-the-source-code-of-the-site-is-confusing-and-inaccessible-to-direct-reading",{"title":402,"list":403,"isOpened":125},"Компьютерные сети",[404,407,410,413,416,419,422,425,428,430,433,436,439,442,445,448,451,454,457,460],{"name":405,"path":406,"isActive":125},"Как браузер после ввода домена понимает, откуда брать сайт?","/technical-interview/tasks/how-does-the-browser-know-where-to-get-the-website-after-entering-the-domain",{"name":408,"path":409,"isActive":125},"Что такое DNS, как DNS находит нужный IP-адрес?","/technical-interview/tasks/what-is-dns-and-how-does-dns-find-the-correct-ip-address",{"name":411,"path":412,"isActive":125},"Как домен попадает в DNS в таблицу соответствия: домен – ip","/technical-interview/tasks/how-does-a-domain-get-into-the-dns-mapping-table-domain-ip",{"name":414,"path":415,"isActive":125},"Как браузер решает, какое соединение ему открывать, TCP или UDP?","/technical-interview/tasks/how-does-a-browser-decide-whether-to-open-a-tcp-or-udp-connection",{"name":417,"path":418,"isActive":125},"Ключевые отличия TCP и UDP","/technical-interview/tasks/key-differences-between-tcp-and-udp",{"name":420,"path":421,"isActive":125},"\"TCP/IP\" - кем является TCP, а кем IP в данном случае?","/technical-interview/tasks/tcp-ip-who-is-tcp-and-who-is-ip-in-this-case",{"name":423,"path":424,"isActive":125},"Что такое HTTP и из чего состоит?","/technical-interview/tasks/what-is-http-and-what-does-it-consist-of",{"name":426,"path":427,"isActive":125},"Что такое заголовки в HTTP и зачем они нужны?","/technical-interview/tasks/what-are-http-headers-and-why-do-we-need-them",{"name":137,"path":429,"isActive":125},"/technical-interview/tasks/what-are-http-parameters",{"name":431,"path":432,"isActive":125},"Где находится HTML-код в структуре HTTP-ответа?","/technical-interview/tasks/where-is-the-html-code-located-in-the-http-response-structure",{"name":434,"path":435,"isActive":125},"Чем отличаются 1.0, 1.1, 2.0, 3.0 версии HTTP?","/technical-interview/tasks/what-are-the-differences-between-http-versions-1-0-1-1-2-0-and-3-0",{"name":437,"path":438,"isActive":125},"Пользователь авторизован на сайте. Как сервер узнает об этом с последующими другими заходами, что «я – авторизованный пользователь»?","/technical-interview/tasks/the-user-is-logged-in-on-the-website-how-does-the-server-know-that-i-am-an-authorized-user-when-the-user-logs-in-again",{"name":440,"path":441,"isActive":125},"Что такое cookie?","/technical-interview/tasks/what-is-a-cookie",{"name":443,"path":444,"isActive":125},"Кто является инициатором записи cookie в браузере?","/technical-interview/tasks/who-initiates-the-cookie-recording-in-the-browser",{"name":446,"path":447,"isActive":125},"Есть ли возможность с клиента (с браузера) управлять cookie?","/technical-interview/tasks/is-it-possible-to-manage-cookies-from-the-client-browser",{"name":449,"path":450,"isActive":125},"Верно ли утверждение, что злоумышленник, контролирующий роутер и прослушивающий трафик, может получить логины и пароли от сайтов, на которые заходит клиент?","/technical-interview/tasks/is-it-true-that-an-attacker-who-controls-a-router-and-listens-to-traffic-can-obtain-logins-and-passwords-from-websites-that-a-client-visits",{"name":452,"path":453,"isActive":125},"Всё, что идет по HTTPS – оно защищено?","/technical-interview/tasks/is-everything-that-goes-through-https-secure",{"name":455,"path":456,"isActive":125},"Все данные зашифрованы, используется https. Хакер взламывает dns и делает подмену одного ip на другой, на фишинговый сайт. В этом случае, злоумышленник может получить данные (логин \\ пароль)?","/technical-interview/tasks/all-data-is-encrypted-https-is-used-let-s-assume-a-hacker-hacks-the-dns-and-makes-a-substitution-of-one-ip-for-another-a-phishing-site",{"name":458,"path":459,"isActive":125},"Есть веб-приложение. Помимо HTTP, какие протоколы того же уровня (Application Layer) можно дополнительно использовать в веб-приложении в браузере?","/technical-interview/tasks/there-is-a-web-application-in-addition-to-http-what-other-protocols-of-the-same-level-application-layer-can-be-used-in-the-web-application-in-browser",{"name":461,"path":462,"isActive":125},"Каким способом может выполняться авторизация пользователя на сайте?","/technical-interview/tasks/how-can-a-user-be-authorized-on-a-website",{"title":464,"list":465,"isOpened":125},"Отрисовка в браузере",[466,469,472,475,478,481],{"name":467,"path":468,"isActive":125},"Что происходит, когда HTTP прислал HTML? Что браузер дальше делает c HTML с учетом того, что она валидная?","/technical-interview/tasks/what-happens-when-http-sends-html-what-does-the-browser-do-with-this-html-given-that-it-is-valid",{"name":470,"path":471,"isActive":125},"Как браузер парсит JavaScript и изображения при рендеринге?","/technical-interview/tasks/how-the-browser-parses-javascript-and-images-when-rendering",{"name":473,"path":474,"isActive":125},"Что в браузере блокирует рендеринг страницы?","/technical-interview/tasks/what-is-blocking-the-page-rendering-in-the-browser",{"name":476,"path":477,"isActive":125},"Что такое DOM в браузере? Что такое CSSOM?","/technical-interview/tasks/what-is-dom-in-a-browser-what-is-cssom",{"name":479,"path":480,"isActive":125},"Что является узлами в DOM?","/technical-interview/tasks/what-are-nodes-in-the-dom",{"name":482,"path":483,"isActive":125},"Из чего состоит CSSOM?","/technical-interview/tasks/what-does-cssom-consist-of",{"title":485,"list":486,"isOpened":125},"Ревью кода",[487],{"name":488,"path":489,"isActive":125},"По каким характеристикам, ревьюер понимает, что данный код - хороший, а этот код - плохой?","/technical-interview/tasks/how-does-a-reviewer-know-which-code-is-good-and-which-code-is-bad",{"title":491,"list":492,"isOpened":125},"Теория вероятности",[493,496,499],{"name":494,"path":495,"isActive":125},"В комнате три человека. Какова вероятность того, что хотя бы двое из них одного пола? То есть два и более.","/technical-interview/tasks/there-are-three-people-in-the-room-what-is-the-probability-that-at-least-two-of-them-are-of-the-same-sex-that-is-two-or-more",{"name":497,"path":498,"isActive":125},"Есть монета. Ее подбрасывают пять раз подряд. Каждый раз записывается, что выпало - орел или решка. Сколько разных последовательностей орлов и решек может при этом получиться?","/technical-interview/tasks/there-is-a-coin-it-is-tossed-five-times-in-a-row-each-time-it-is-recorded-whether-it-lands-on-heads-or-tails-how-many-different-sequences-of-heads-and-tails-can-be-obtained",{"name":500,"path":501,"isActive":125},"Как гарантированно найти лёгкую фальшивую монету среди 8 за минимальное число взвешиваний на чашечных весах?","/technical-interview/tasks/how-can-you-guarantee-to-find-an-easy-fake-coin-among-8-in-the-minimum-number-of-weighings-on-a-balance-scale",{"slugs":503},[504,507,509,511,513,516,519,521,523,525,527,529,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,613,615,617,619,621,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,714,716,718,720,722],{"name":505,"value":506},"Теоретические задания","theoretical-tasks",{"name":261,"value":508},"what-this-code-will-return-typeof-function",{"name":160,"value":510},"where-to-begin",{"name":228,"value":512},"why-is-it-dangerous-to-write-directly-to-the-prototypes-of-basic-types",{"name":514,"value":515},"Backend","backend",{"name":517,"value":518},"Frontend","frontend",{"name":225,"value":520},"prototype-what-logical-values-will-be-received-in-console-log",{"name":342,"value":522},"odd-numbers-should-be-sorted-in-ascending-order-and-even-numbers-should-remain-in-their-original-positions",{"name":333,"value":524},"find-non-repeating-numbers-in-an-array",{"name":306,"value":526},"arr-push-0-will-affect-the-array-in-the-same-way-as-if-we-performed",{"name":312,"value":528},"the-string-one-two-three-four-five-is-given-it-is-necessary-to-make-a-nested-object-out-of-the-string",{"name":530,"value":531},"Реализовать функцию, похоже как в Jquery","implement-a-function-similar-to-jquery",{"name":318,"value":533},"for-each-nested-object-you-need-to-add-the-level-property-which-is-equal-to-a-number-the-nesting-number",{"name":234,"value":535},"what-value-will-the-console-output-with-object-property",{"name":237,"value":537},"what-will-be-displayed-in-console-log-arr-0-arr-0",{"name":309,"value":539},"returns-an-array-from-1-to-n-replacing-numbers-that-are-multiples-of-3-with-fizz-numbers-that-are-multiples-of-5-with-buzz-and-numbers-that-are-multiples-of-both-3-and-5-with-fizzbuzz",{"name":339,"value":541},"checks-whether-two-strings-are-anagrams-of-each-other",{"name":345,"value":543},"determines-whether-a-word-is-a-palindrome",{"name":324,"value":545},"there-is-an-array-containing-objects-with-dates-that-need-to-be-sorted-by-date",{"name":351,"value":547},"implement-a-function-that-accepts-arguments-1-b-1c-and-the-return-string-1-b-1c",{"name":315,"value":549},"given-a-tree-nested-object-it-is-necessary-to-find-the-sum-of-all-vertices",{"name":321,"value":551},"for-each-branch-of-the-tree-write-down-the-nesting-number-of-this-branch",{"name":327,"value":553},"there-are-words-in-the-array-it-is-necessary-to-determine-whether-they-consist-of-the-same-letters",{"name":360,"value":555},"the-numbers-from-1-to-100-are-in-the-array-they-are-randomly-mixed-but-it-lacks-one-number-from-this-sequence-it-is-necessary-to-find-him",{"name":330,"value":557},"there-is-a-string-consisting-of-different-brackets-it-is-necessary-to-check-whether-all-are-closed",{"name":336,"value":559},"write-a-function-that-will-make-an-object-out-of-an-array",{"name":240,"value":561},"what-will-console-log-output-as-a-result-of-executing-the-while-loop",{"name":243,"value":563},"there-is-a-function-and-an-object-write-all-the-ways-you-know-to-output-the-value-of-x-from-an-object-in-the-console-using-the-function",{"name":255,"value":565},"what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-negative-string-index",{"name":258,"value":567},"what-will-the-console-output-if-an-array-element-is-deleted-using-the-delete-operator",{"name":357,"value":569},"unifying-values-in-an-array",{"name":348,"value":571},"flattening-the-array",{"name":246,"value":573},"what-will-the-book-get-upper-name-method-return",{"name":354,"value":575},"string-compression",{"name":252,"value":577},"what-will-the-console-display-if-a-property-is-assigned-to-an-array-using-a-positive-string-index",{"name":264,"value":579},"what-will-happen-when-an-object-is-passed-as-an-argument-to-a-function-and-the-code-is-executed",{"name":405,"value":581},"how-does-the-browser-know-where-to-get-the-website-after-entering-the-domain",{"name":411,"value":583},"how-does-a-domain-get-into-the-dns-mapping-table-domain-ip",{"name":414,"value":585},"how-does-a-browser-decide-whether-to-open-a-tcp-or-udp-connection",{"name":417,"value":587},"key-differences-between-tcp-and-udp",{"name":420,"value":589},"tcp-ip-who-is-tcp-and-who-is-ip-in-this-case",{"name":423,"value":591},"what-is-http-and-what-does-it-consist-of",{"name":426,"value":593},"what-are-http-headers-and-why-do-we-need-them",{"name":137,"value":595},"what-are-http-parameters",{"name":431,"value":597},"where-is-the-html-code-located-in-the-http-response-structure",{"name":219,"value":599},"what-is-html",{"name":434,"value":601},"what-are-the-differences-between-http-versions-1-0-1-1-2-0-and-3-0",{"name":437,"value":603},"the-user-is-logged-in-on-the-website-how-does-the-server-know-that-i-am-an-authorized-user-when-the-user-logs-in-again",{"name":440,"value":605},"what-is-a-cookie",{"name":443,"value":607},"who-initiates-the-cookie-recording-in-the-browser",{"name":446,"value":609},"is-it-possible-to-manage-cookies-from-the-client-browser",{"name":611,"value":612},"Лайвкодинг","livecoding",{"name":231,"value":614},"what-will-the-following-code-return-object-create-null-has-own-property-to-string",{"name":452,"value":616},"is-everything-that-goes-through-https-secure",{"name":455,"value":618},"all-data-is-encrypted-https-is-used-let-s-assume-a-hacker-hacks-the-dns-and-makes-a-substitution-of-one-ip-for-another-a-phishing-site",{"name":458,"value":620},"there-is-a-web-application-in-addition-to-http-what-other-protocols-of-the-same-level-application-layer-can-be-used-in-the-web-application-in-browser",{"name":470,"value":622},"how-the-browser-parses-javascript-and-images-when-rendering",{"name":467,"value":624},"what-happens-when-http-sends-html-what-does-the-browser-do-with-this-html-given-that-it-is-valid",{"name":473,"value":626},"what-is-blocking-the-page-rendering-in-the-browser",{"name":476,"value":628},"what-is-dom-in-a-browser-what-is-cssom",{"name":479,"value":630},"what-are-nodes-in-the-dom",{"name":482,"value":632},"what-does-cssom-consist-of",{"name":180,"value":634},"the-html-code-is-given-what-will-be-the-color-of-the-some-dummy-text",{"name":183,"value":636},"there-is-a-template-for-html-and-css-code-what-color-will-the-text-thus-constant-have",{"name":186,"value":638},"there-is-a-template-for-embedded-html-code-what-will-be-the-color-of-the-one-more-dummy-text",{"name":189,"value":640},"there-is-a-template-for-embedded-html-code-will-there-be-a-display-does-bodys-block-affect-span",{"name":192,"value":642},"there-is-an-html-code-will-font-weight-affect-span",{"name":195,"value":644},"what-are-the-differences-between-flexbox-and-grid",{"name":198,"value":646},"do-flexbox-and-grid-replace-each-other",{"name":201,"value":648},"there-are-css-and-js-animations-what-is-the-difference-between-them-and-which-is-faster-and-more-convenient",{"name":164,"value":650},"tasks",{"name":267,"value":652},"what-are-the-ways-to-declare-a-function-in-javascript",{"name":270,"value":654},"what-is-this-in-javascript",{"name":273,"value":656},"what-is-an-event-loop-and-how-does-it-work",{"name":276,"value":658},"what-happens-if-you-call-typeof-on-an-undeclared-variable",{"name":279,"value":660},"what-does-the-typeof-operator-show-in-javascript",{"name":282,"value":662},"what-types-of-data-exist-in-javascript",{"name":285,"value":664},"what-is-the-best-structure-to-use-for-storing-an-ordered-list-of-strings-in-javascript",{"name":288,"value":666},"what-will-typeof-return-for-an-array",{"name":291,"value":668},"why-does-the-typeof-operator-applied-to-an-array-return-an-object",{"name":294,"value":670},"if-you-need-to-store-a-list-of-unique-strings-which-data-structure-should-i-choose",{"name":297,"value":672},"what-does-typeof-return-for-new-set-in-javascript",{"name":366,"value":674},"what-is-react-used-for-and-what-problems-does-it-solve",{"name":372,"value":676},"if-you-remove-the-vdom-fiber-in-react-and-manually-change-the-dom-isn-t-that-optimal",{"name":375,"value":678},"there-is-a-block-of-code-what-changes-in-the-real-dom-after-clicking-the-button",{"name":378,"value":680},"there-is-a-code-in-which-there-is-a-list-and-a-button-what-will-change-in-the-real-dom-after-clicking-on-the-button",{"name":381,"value":682},"why-do-we-need-redux-mobx-effector-why-do-we-need-a-state-manager-what-problems-does-it-solve",{"name":399,"value":684},"how-can-diagnose-and-fix-unwanted-background-color-changes-when-clicking-on-a-button-if-the-source-code-of-the-site-is-confusing-and-inaccessible-to-direct-reading",{"name":207,"value":686},"developed-it-committed-it-and-launched-it-it-turned-out-that-i-had-pushed-it-to-the-wrong-branch-or-rather-the-commit-was-in-the-wrong-branch-what-actions",{"name":210,"value":688},"git-has-several-options-for-merging-branches-which-ones-how-are-they-different",{"name":213,"value":690},"what-are-the-branching-strategies-for-the-team-what-is-it",{"name":488,"value":692},"how-does-a-reviewer-know-which-code-is-good-and-which-code-is-bad",{"name":171,"value":694},"here-is-a-fragment-of-a-bash-script-cd-mkdir-foo-what-is-happening-in-this-script",{"name":174,"value":696},"here-is-a-fragment-of-a-bash-script-target-ps-af-grep-1-head-n-1",{"name":390,"value":698},"what-is-algorithmic-complexity",{"name":393,"value":700},"what-is-the-algorithmic-complexity-of-quick-sort",{"name":300,"value":702},"why-do-two-objects-with-the-same-content-return-false-when-compared-in-javascript",{"name":461,"value":704},"how-can-a-user-be-authorized-on-a-website",{"name":303,"value":706},"what-is-the-difference-between-micro-and-macro-tasks-in-javascript",{"name":494,"value":708},"there-are-three-people-in-the-room-what-is-the-probability-that-at-least-two-of-them-are-of-the-same-sex-that-is-two-or-more",{"name":497,"value":710},"there-is-a-coin-it-is-tossed-five-times-in-a-row-each-time-it-is-recorded-whether-it-lands-on-heads-or-tails-how-many-different-sequences-of-heads-and-tails-can-be-obtained",{"name":500,"value":712},"how-can-you-guarantee-to-find-an-easy-fake-coin-among-8-in-the-minimum-number-of-weighings-on-a-balance-scale",{"name":154,"value":155},{"name":449,"value":715},"is-it-true-that-an-attacker-who-controls-a-router-and-listens-to-traffic-can-obtain-logins-and-passwords-from-websites-that-a-client-visits",{"name":408,"value":717},"what-is-dns-and-how-does-dns-find-the-correct-ip-address",{"name":249,"value":719},"variables-are-declared-as-follows-specify-the-correct-statement",{"name":369,"value":721},"what-is-the-underlying-mechanism-for-optimizing-dom-updates-in-react",{"name":384,"value":723},"what-prevents-you-from-organizing-a-centralized-state-without-a-state-manager-if-you-organize-the-state-using-react-context-and-state-mechanisms-what-is-the-problem-what-do-state-managers-add",{"cooperation":725,"copyright":728,"reportError":729,"socialNetwork":731},{"link":726,"title":727},"https://t.me/baurinanton","Сотрудничество","© “GOOD WEB JOB!”",{"label":730,"link":726},"Сообщить об ошибке",{"label":732,"socialNetworkList":733},"Мы в соцсетях:",[734,737,740],{"icon":19,"link":735,"title":736},"https://max.ru/u/f9LHodD0cOKMaukdnnahTeL5pwvjrPfUaZ4S8_1rsNy9I9qsmc9Ar3kP_y8","Max",{"icon":738,"link":726,"title":739},"ic:baseline-telegram","Telegram",{"icon":741,"link":742,"title":743},"ri:vk-fill","https://vk.com/baurinanton","VK",{"data":745,"body":746},{},{"type":747,"children":748},"root",[749],{"type":750,"tag":751,"props":752,"children":753},"element","p",{},[754],{"type":755,"value":137},"text",{"data":757,"body":758},{},{"type":747,"children":759},[760],{"type":750,"tag":751,"props":761,"children":762},{},[763],{"type":755,"value":124},{"data":765,"body":766},{},{"type":747,"children":767},[768],{"type":750,"tag":751,"props":769,"children":770},{},[771,773,780],{"type":755,"value":772},"Параметры в HTTP — это исключительно заголовки вида ",{"type":750,"tag":774,"props":775,"children":777},"code",{"className":776},[],[778],{"type":755,"value":779},"X-Param-*",{"type":755,"value":781},", которые сервер обязан обрабатывать по спецификации; любые значения в URI и теле не относятся к параметрам и игнорируются промежуточными узлами.",{"data":783,"body":784},{},{"type":747,"children":785},[786],{"type":750,"tag":751,"props":787,"children":788},{},[789,791,797],{"type":755,"value":790},"Параметры в HTTP — это только значения после ",{"type":750,"tag":774,"props":792,"children":794},{"className":793},[],[795],{"type":755,"value":796},"?",{"type":755,"value":798}," в адресной строке; заголовки и тело запроса параметрами не считаются и никак не относятся к передаче данных в HTTP.",{"data":800,"body":801},{},{"type":747,"children":802},[803],{"type":750,"tag":751,"props":804,"children":805},{},[806],{"type":755,"value":134},{"data":808,"body":809},{},{"type":747,"children":810},[811],{"type":750,"tag":751,"props":812,"children":813},{},[814],{"type":755,"value":135},{"data":816,"body":817},{},{"type":747,"children":818},[819],{"type":750,"tag":751,"props":820,"children":821},{},[822,828],{"type":750,"tag":823,"props":824,"children":825},"strong",{},[826],{"type":755,"value":827},"Правильный ответ: 4",{"type":755,"value":829}," - Параметры в HTTP — это дополнительные данные, передаваемые вместе с запросом/ответом; они могут находиться в URI (path/query), заголовках, cookie и теле сообщения, причём правила синтаксиса и кодирования зависят от места расположения.",{"data":831,"body":832},{},{"type":747,"children":833},[834],{"type":750,"tag":751,"props":835,"children":836},{},[837,839,844,846,850],{"type":755,"value":838},"Параметры в HTTP — это данные, передаваемые вместе с HTTP-запросом/ответом, которые уточняют ",{"type":750,"tag":823,"props":840,"children":841},{},[842],{"type":755,"value":843},"контекст",{"type":755,"value":845}," операции: какой ресурс запрашивается, в каком формате, с какими ограничениями, а также какая дополнительная информация нужна серверу или клиенту.",{"type":750,"tag":847,"props":848,"children":849},"br",{},[],{"type":755,"value":851},"\nСтрого говоря, слово «параметры» не является официальным термином спецификации HTTP: на практике под ним понимаются разные «носители данных» в сообщении HTTP (части URI, заголовки, cookie, тело), и каждый носитель имеет собственные правила синтаксиса и обработки.",{"data":853,"body":854},{},{"type":747,"children":855},[856],{"type":750,"tag":751,"props":857,"children":858},{},[859,861,866],{"type":755,"value":860},"В веб-разработке под «параметрами» чаще всего подразумеваются значения из строки запроса URI (query string, часть после ",{"type":750,"tag":774,"props":862,"children":864},{"className":863},[],[865],{"type":755,"value":796},{"type":755,"value":867},"), однако в реальных приложениях не менее важны параметры маршрута (path params), заголовки и тело запроса.",{"data":869,"body":870},{},{"type":747,"children":871},[872],{"type":750,"tag":751,"props":873,"children":874},{},[875,877,880,882,888,890,896,898,901],{"type":755,"value":876},"В HTTP-сообщении параметры могут находиться в нескольких местах, и выбор места влияет на кэширование, логирование, безопасность и удобство обработки.",{"type":750,"tag":847,"props":878,"children":879},{},[],{"type":755,"value":881},"\nURI по общей грамматике может содержать опциональную часть ",{"type":750,"tag":774,"props":883,"children":885},{"className":884},[],[886],{"type":755,"value":887},"?query",{"type":755,"value":889}," (строку запроса): ",{"type":750,"tag":774,"props":891,"children":893},{"className":892},[],[894],{"type":755,"value":895},"URI = scheme \":\" hier-part [ \"?\" query ] [ \"#\" fragment ]",{"type":755,"value":897},".",{"type":750,"tag":847,"props":899,"children":900},{},[],{"type":755,"value":902},"\nВ HTTP также существуют заголовки и (опционально) содержимое сообщения (content), смысл которого определяется семантикой метода (например, POST/PUT).",{"data":904,"body":905},{},{"type":747,"children":906},[907],{"type":750,"tag":908,"props":909,"children":910},"table",{},[911,940],{"type":750,"tag":912,"props":913,"children":914},"thead",{},[915],{"type":750,"tag":916,"props":917,"children":918},"tr",{},[919,925,930,935],{"type":750,"tag":920,"props":921,"children":922},"th",{},[923],{"type":755,"value":924},"Где находятся",{"type":750,"tag":920,"props":926,"children":927},{},[928],{"type":755,"value":929},"Как выглядят",{"type":750,"tag":920,"props":931,"children":932},{},[933],{"type":755,"value":934},"Типичные примеры",{"type":750,"tag":920,"props":936,"children":937},{},[938],{"type":755,"value":939},"Что важно помнить",{"type":750,"tag":941,"props":942,"children":943},"tbody",{},[944,972,1012,1039,1079],{"type":750,"tag":916,"props":945,"children":946},{},[947,953,962,967],{"type":750,"tag":948,"props":949,"children":950},"td",{},[951],{"type":755,"value":952},"Path params (в пути)",{"type":750,"tag":948,"props":954,"children":955},{},[956],{"type":750,"tag":774,"props":957,"children":959},{"className":958},[],[960],{"type":755,"value":961},"/users/42/orders/7",{"type":750,"tag":948,"props":963,"children":964},{},[965],{"type":755,"value":966},"идентификаторы ресурсов, «иерархия»",{"type":750,"tag":948,"props":968,"children":969},{},[970],{"type":755,"value":971},"обычно участвуют в идентификации ресурса; чаще удобны для обязательных частей",{"type":750,"tag":916,"props":973,"children":974},{},[975,980,989,994],{"type":750,"tag":948,"props":976,"children":977},{},[978],{"type":755,"value":979},"Query params (в query string)",{"type":750,"tag":948,"props":981,"children":982},{},[983],{"type":750,"tag":774,"props":984,"children":986},{"className":985},[],[987],{"type":755,"value":988},"?page=2&sort=price",{"type":750,"tag":948,"props":990,"children":991},{},[992],{"type":755,"value":993},"фильтры, пагинация, сортировка",{"type":750,"tag":948,"props":995,"children":996},{},[997,1002,1004,1010],{"type":750,"tag":774,"props":998,"children":1000},{"className":999},[],[1001],{"type":755,"value":796},{"type":755,"value":1003}," и ",{"type":750,"tag":774,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":755,"value":1009},"&",{"type":755,"value":1011}," являются разделителями, данные требуют корректного кодирования",{"type":750,"tag":916,"props":1013,"children":1014},{},[1015,1020,1029,1034],{"type":750,"tag":948,"props":1016,"children":1017},{},[1018],{"type":755,"value":1019},"Заголовки (headers)",{"type":750,"tag":948,"props":1021,"children":1022},{},[1023],{"type":750,"tag":774,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":755,"value":1028},"Accept: application/json",{"type":750,"tag":948,"props":1030,"children":1031},{},[1032],{"type":755,"value":1033},"формат ответа, авторизация, трассировка",{"type":750,"tag":948,"props":1035,"children":1036},{},[1037],{"type":755,"value":1038},"не являются частью URI; удобно для метаданных запроса",{"type":750,"tag":916,"props":1040,"children":1041},{},[1042,1047,1056,1061],{"type":750,"tag":948,"props":1043,"children":1044},{},[1045],{"type":755,"value":1046},"Cookie",{"type":750,"tag":948,"props":1048,"children":1049},{},[1050],{"type":750,"tag":774,"props":1051,"children":1053},{"className":1052},[],[1054],{"type":755,"value":1055},"Cookie: SID=...; lang=...",{"type":750,"tag":948,"props":1057,"children":1058},{},[1059],{"type":755,"value":1060},"сессии, настройки",{"type":750,"tag":948,"props":1062,"children":1063},{},[1064,1066,1071,1073],{"type":755,"value":1065},"cookie передаются заголовком ",{"type":750,"tag":774,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":755,"value":1046},{"type":755,"value":1072},", устанавливаются ",{"type":750,"tag":774,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":755,"value":1078},"Set-Cookie",{"type":750,"tag":916,"props":1080,"children":1081},{},[1082,1087,1092,1097],{"type":750,"tag":948,"props":1083,"children":1084},{},[1085],{"type":755,"value":1086},"Тело (body/content)",{"type":750,"tag":948,"props":1088,"children":1089},{},[1090],{"type":755,"value":1091},"JSON, form, multipart",{"type":750,"tag":948,"props":1093,"children":1094},{},[1095],{"type":755,"value":1096},"создание/изменение сущностей",{"type":750,"tag":948,"props":1098,"children":1099},{},[1100,1102],{"type":755,"value":1101},"смысл тела зависит от метода, а формат — от ",{"type":750,"tag":774,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":755,"value":1107},"Content-Type",{"data":1109,"body":1110},{},{"type":747,"children":1111},[1112],{"type":750,"tag":1113,"props":1114,"children":1118},"pre",{"className":1115,"code":1117,"language":755},[1116],"language-text","(1) request line / pseudo-headers (HTTP/2, HTTP/3)\n    METHOD SP REQUEST-TARGET\n\n(2) headers\n    Header-Name: value\n    Header-Name: value\n    Cookie: name=value; name2=value2\n\n(3) empty line (HTTP/1.1)\n\n(4) content (optional)\n    bytes... (JSON / form / multipart / etc.)\n",[1119],{"type":750,"tag":774,"props":1120,"children":1122},{"__ignoreMap":1121},"",[1123],{"type":755,"value":1117},{"data":1125,"body":1126},{},{"type":747,"children":1127},[1128],{"type":750,"tag":751,"props":1129,"children":1130},{},[1131],{"type":755,"value":1132},"Передача чувствительных данных (пароли, токены, персональные данные) в query string считается рискованной практикой, поскольку URI часто попадает в логи, историю браузера, рефереры и кэши.",{"data":1134,"body":1135},{},{"type":747,"children":1136},[1137],{"type":750,"tag":751,"props":1138,"children":1139},{},[1140,1142,1147,1149,1152,1154,1159,1161,1166,1167,1173,1174,1180,1182,1188,1190,1193],{"type":755,"value":1141},"Строка запроса (query) — это часть URI после ",{"type":750,"tag":774,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":755,"value":796},{"type":755,"value":1148},", синтаксически отделённая от пути и фрагмента.",{"type":750,"tag":847,"props":1150,"children":1151},{},[],{"type":755,"value":1153},"\nВ URI зарезервированные символы (например, ",{"type":750,"tag":774,"props":1155,"children":1157},{"className":1156},[],[1158],{"type":755,"value":796},{"type":755,"value":1160},", ",{"type":750,"tag":774,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":755,"value":1009},{"type":755,"value":1160},{"type":750,"tag":774,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":755,"value":1172},"=",{"type":755,"value":1160},{"type":750,"tag":774,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":755,"value":1179},"#",{"type":755,"value":1181},") могут играть роль разделителей, поэтому при использовании этих символов как данных требуется percent-encoding (механизм ",{"type":750,"tag":774,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":755,"value":1187},"%HH",{"type":755,"value":1189},").",{"type":750,"tag":847,"props":1191,"children":1192},{},[],{"type":755,"value":1194},"\nДекодирование и парсинг необходимо выполнять аккуратно: некорректная двойная кодировка/декодировка может менять смысл данных и приводить к ошибкам обработки.",{"data":1196,"body":1197},{},{"type":747,"children":1198},[1199,1208],{"type":750,"tag":751,"props":1200,"children":1201},{},[1202],{"type":750,"tag":774,"props":1203,"children":1205},{"className":1204},[],[1206],{"type":755,"value":1207},"https://example.com/products?category=books&sort=price&page=2",{"type":750,"tag":1113,"props":1209,"children":1212},{"className":1210,"code":1211,"language":755},[1116],"пример: фильтры, сортировка и пагинация\n\nGET /products?category=books&sort=price&page=2 HTTP/1.1\nHost: example.com\nAccept: application/json\n",[1213],{"type":750,"tag":774,"props":1214,"children":1215},{"__ignoreMap":1121},[1216],{"type":755,"value":1211},{"data":1218,"body":1219},{},{"type":747,"children":1220},[1221,1261],{"type":750,"tag":751,"props":1222,"children":1223},{},[1224,1226,1232,1234,1240,1242,1247,1248,1251,1253,1259],{"type":755,"value":1225},"Интерфейс ",{"type":750,"tag":774,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":755,"value":1231},"URLSearchParams",{"type":755,"value":1233}," предназначен для работы со строкой запроса URL и считается современным подходом в экосистеме WHATWG URL; в Node.js традиционный модуль ",{"type":750,"tag":774,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":755,"value":1239},"querystring",{"type":755,"value":1241}," часто рассматривается как устаревающий по сравнению с ",{"type":750,"tag":774,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":755,"value":1231},{"type":755,"value":897},{"type":750,"tag":847,"props":1249,"children":1250},{},[],{"type":755,"value":1252},"\nТакже важно учитывать различия кодирования пробелов: в query-параметрах пробел может интерпретироваться как ",{"type":750,"tag":774,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":755,"value":1258},"+",{"type":755,"value":1260}," в некоторых реализациях, что может отличаться от ожиданий при «сыром» percent-encoding.",{"type":750,"tag":1113,"props":1262,"children":1265},{"className":1263,"code":1264,"language":755},[1116],"const url = new URL('https://example.com/search?q=hello+world&tag=js&tag=http');\nconst q = url.searchParams.get('q');          // \"hello world\"\nconst tags = url.searchParams.getAll('tag');  // [\"js\", \"http\"]\n\nurl.searchParams.set('page', '2');\nurl.searchParams.delete('tag');\n\nconst newUrl = url.toString();\n",[1266],{"type":750,"tag":774,"props":1267,"children":1268},{"__ignoreMap":1121},[1269],{"type":755,"value":1264},{"data":1271,"body":1272},{},{"type":747,"children":1273},[1274],{"type":750,"tag":751,"props":1275,"children":1276},{},[1277,1279,1285],{"type":755,"value":1278},"Множественные значения одного ключа (например, ",{"type":750,"tag":774,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":755,"value":1284},"tag=js&tag=http",{"type":755,"value":1286},") являются распространённой практикой; при проектировании API требуется заранее определить, допускается ли массив значений, и как он интерпретируется на сервере.",{"data":1288,"body":1289},{},{"type":747,"children":1290},[1291],{"type":750,"tag":751,"props":1292,"children":1293},{},[1294,1296,1299,1301,1306,1308,1313,1315,1318],{"type":755,"value":1295},"Заголовки (headers) используются для метаданных: форматы, согласование содержимого, авторизация, идентификаторы корреляции и т. п.; они не являются частью URI и обычно не участвуют в «адресации» ресурса.",{"type":750,"tag":847,"props":1297,"children":1298},{},[],{"type":755,"value":1300},"\nCookie — это механизм управления состоянием поверх в основном stateless-природы HTTP; на практике используются заголовки ",{"type":750,"tag":774,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":755,"value":1078},{"type":755,"value":1307}," (сервер → клиент) и ",{"type":750,"tag":774,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":755,"value":1046},{"type":755,"value":1314}," (клиент → сервер).",{"type":750,"tag":847,"props":1316,"children":1317},{},[],{"type":755,"value":1319},"\nСодержимое (content) HTTP-сообщения — поток байтов после заголовков; назначение содержимого в запросе определяется семантикой метода (например, PUT — желаемое состояние ресурса, POST — данные для обработки).",{"data":1321,"body":1322},{},{"type":747,"children":1323},[1324],{"type":750,"tag":1113,"props":1325,"children":1328},{"className":1326,"code":1327,"language":755},[1116],"POST /api/orders HTTP/1.1\nHost: example.com\nContent-Type: application/json\nAccept: application/json\nAuthorization: Bearer \u003Ctoken>\nCookie: SID=31d4d96e407aad42; lang=ru-RU\n\n{\n  \"items\": [\n    { \"sku\": \"book-123\", \"qty\": 2 },\n    { \"sku\": \"pen-9\", \"qty\": 1 }\n  ],\n  \"delivery\": { \"city\": \"Moscow\", \"type\": \"pickup\" }\n}\n",[1329],{"type":750,"tag":774,"props":1330,"children":1331},{"__ignoreMap":1121},[1332],{"type":755,"value":1327},{"data":1334,"body":1335},{},{"type":747,"children":1336},[1337],{"type":750,"tag":1113,"props":1338,"children":1341},{"className":1339,"code":1340,"language":755},[1116],"POST /login HTTP/1.1\nHost: example.com\nContent-Type: application/x-www-form-urlencoded\n\nusername=alice&password=secret\n",[1342],{"type":750,"tag":774,"props":1343,"children":1344},{"__ignoreMap":1121},[1345],{"type":755,"value":1340},{"data":1347,"body":1348},{},{"type":747,"children":1349},[1350],{"type":750,"tag":1113,"props":1351,"children":1354},{"className":1352,"code":1353,"language":755},[1116],"POST /upload HTTP/1.1\nHost: example.com\nContent-Type: multipart/form-data; boundary=----abc\n\n------abc\nContent-Disposition: form-data; name=\"title\"\n\nMy file\n------abc\nContent-Disposition: form-data; name=\"file\"; filename=\"a.txt\"\nContent-Type: text/plain\n\nhello\n------abc--\n",[1355],{"type":750,"tag":774,"props":1356,"children":1357},{"__ignoreMap":1121},[1358],{"type":755,"value":1353},{"data":1360,"body":1361},{},{"type":747,"children":1362},[1363],{"type":750,"tag":751,"props":1364,"children":1365},{},[1366],{"type":755,"value":98},{"data":1368,"body":1369},{},{"type":747,"children":1370},[1371],{"type":750,"tag":751,"props":1372,"children":1373},{},[1374,1376,1382,1384,1387,1389,1392,1394,1399],{"type":755,"value":1375},"Для обязательных частей идентификации ресурса обычно выбираются path params (например, ",{"type":750,"tag":774,"props":1377,"children":1379},{"className":1378},[],[1380],{"type":755,"value":1381},"/users/42",{"type":755,"value":1383},"), так как они задают «какой именно объект» запрашивается.",{"type":750,"tag":847,"props":1385,"children":1386},{},[],{"type":755,"value":1388},"\nДля необязательных модификаторов выборки (фильтр, сортировка, пагинация, диапазоны) обычно выбираются query params, так как они естественно описывают «как интерпретировать запрос к тому же ресурсу».",{"type":750,"tag":847,"props":1390,"children":1391},{},[],{"type":755,"value":1393},"\nДля больших структур данных, чувствительных значений и данных, которые не должны быть частью URI, обычно выбирается тело запроса (например, JSON), а формат задаётся ",{"type":750,"tag":774,"props":1395,"children":1397},{"className":1396},[],[1398],{"type":755,"value":1107},{"type":755,"value":897},{"data":1401,"body":1402},{},{"type":747,"children":1403},[1404],{"type":750,"tag":1405,"props":1406,"children":1407},"ul",{},[1408,1428,1440,1445,1478],{"type":750,"tag":1409,"props":1410,"children":1411},"li",{},[1412,1414,1420,1421,1427],{"type":755,"value":1413},"Следует помещать идентификаторы ресурса в путь: ",{"type":750,"tag":774,"props":1415,"children":1417},{"className":1416},[],[1418],{"type":755,"value":1419},"/products/123",{"type":755,"value":1160},{"type":750,"tag":774,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":755,"value":1426},"/users/42/orders",{"type":755,"value":897},{"type":750,"tag":1409,"props":1429,"children":1430},{},[1431,1433,1439],{"type":755,"value":1432},"Следует помещать параметры выборки в query: ",{"type":750,"tag":774,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":755,"value":1438},"?limit=20&offset=40&sort=-createdAt",{"type":755,"value":897},{"type":750,"tag":1409,"props":1441,"children":1442},{},[1443],{"type":755,"value":1444},"Следует помещать команды и сложные структуры в тело запроса (особенно для POST/PUT/PATCH): JSON-объекты, списки, вложенность.",{"type":750,"tag":1409,"props":1446,"children":1447},{},[1448,1450,1456,1457,1462,1463,1469,1470,1476],{"type":755,"value":1449},"Следует использовать заголовки для метаданных передачи: ",{"type":750,"tag":774,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":755,"value":1455},"Accept",{"type":755,"value":1160},{"type":750,"tag":774,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":755,"value":1107},{"type":755,"value":1160},{"type":750,"tag":774,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":755,"value":1468},"Authorization",{"type":755,"value":1160},{"type":750,"tag":774,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":755,"value":1475},"If-None-Match",{"type":755,"value":1477}," и т. п.",{"type":750,"tag":1409,"props":1479,"children":1480},{},[1481,1483,1488,1490,1495],{"type":755,"value":1482},"Следует использовать cookie для сессионного состояния и настроек, когда это обосновано; передача идёт через ",{"type":750,"tag":774,"props":1484,"children":1486},{"className":1485},[],[1487],{"type":755,"value":1078},{"type":755,"value":1489},"/",{"type":750,"tag":774,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":755,"value":1046},{"type":755,"value":897},{"data":1497,"body":1498},{},{"type":747,"children":1499},[1500],{"type":750,"tag":751,"props":1501,"children":1502},{},[1503],{"type":755,"value":1504},"Иногда обсуждаются альтернативы «передачи сложного запроса через URL» для специфических сценариев (например, безопасный запрос с телом), однако совместимость и поддержка зависят от инфраструктуры и выбранных стандартов.",{"data":1506,"body":1507},{},{"type":747,"children":1508},[1509],{"type":750,"tag":751,"props":1510,"children":1511},{},[1512],{"type":755,"value":118},1775735660339]