Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 81

Как браузер узнает на какой http запрос пришел ответ

05.04.2018, 11:56. Показов 3360. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Отправил асинхронный запрос на сервер и не дожидаясь ответа отправил второй асинхронный запрос.
На какой из этих запросов придет ответ? Как браузер понимает к какому запросу относится полученный ответ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2018, 11:56
Ответы с готовыми решениями:

Как отследить с какой страницы пришёл ответ с гугл формы
Здравствуйте. У меня есть ряд страниц, на них есть разные гугл форм, которые соответственно прикреплены к разным доком. Есть задача...

Как узнать от какого контрола с какой формы пришел запрос?
Кликая по Датагрид на одной форме ChoiceFirm, вызываем вторую Firms для редактирования содержимого этого грида. Но вызываемая форма Firms...

На запрос еще не пришел ответ, а код продолжает дальше выполнятся
Здравствуйте. При нажатии кнопки, выполняется запрос, затем должен выйти спарсенный результат (vkKlient.myId). Как только нажимаю кнопку,...

18
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
05.04.2018, 12:31
Цитата Сообщение от lebedun Посмотреть сообщение
На какой из этих запросов придет ответ?
На оба, если не отменить предыдущий запрос

Цитата Сообщение от lebedun Посмотреть сообщение
Как браузер понимает к какому запросу относится полученный ответ?
В качестве примера можно разобрать jquery обертку для пост запроса:
JavaScript
1
2
3
4
5
6
$.post( 
"ajax/test.html", // путь до вашего апи
function( data ) { // функция обратного вызова, которая сработает после ответа от апи для конретно этого запроса
  $( ".result" ).html( data );
}
);
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
05.04.2018, 21:29
посмотрите тему Два запроса ajax -- там есть ссылка на мой работающий пример, где по ответу определяется запрос
0
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 81
05.04.2018, 22:44  [ТС]
Может для каждого http запроса создается новое tcp соединение?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
06.04.2018, 08:16
lebedun, AJAX использует javascript-объект XMLHttpRequest, у которого изначально определяются:
1) свойство отправки запроса к серверу send
и 2) свойство готовности к получению ответа от сервера onreadystatechange на этот запрос

Полагаю, что всё работает абсолютно идентично обычному браузерному запросу -- когда отправляется запрос к серверу, вместе с ним отсылается http-заголовок, в котором содержится однозначный "идентификатор" объекта XMLHttpRequest, который этот запрос сформировал и, разумеется, в ответе сервера этот "идентификатор" из http-заголовка продублирован,
так что если со страницы ушло даже тысяча запросов к серверу (к серверам), страница гарантированно будет "знать", какой из тысячи полученных ответов какому именно запросу соответствует

и ещё раз, "на пальцах" -- положим, на странице имеется сотня тегов <img>, у каждого из которых указан свой src
браузер практически одновременно отсылает сотню запросов на получение графических файлов от серверов по указанным в src URL'ам и получает эти графические файлы через разные промежутки времени (время получения зависит и от размера файла, и от доступности серверов, и от скорости интернет-соединения)
но страница "знает", какой именно файл из сотни полученных в каком именно теге <img> надо отобразить... и отображает безошибочно
и тут ни у кого никаких вопросов не возникает... а с ajax'ом почему-то проблемы...

а ведь механизм работы страницы в обоих случаях один и тот же
0
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 81
06.04.2018, 12:01  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
когда отправляется запрос к серверу, вместе с ним отсылается http-заголовок, в котором содержится однозначный "идентификатор" объекта XMLHttpRequest, который этот запрос сформировал и, разумеется, в ответе сервера этот "идентификатор" из http-заголовка продублирован
В каком именно заголовке прописывается этот идентификатор?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
06.04.2018, 15:50
объект
Цитата Сообщение от lebedun Посмотреть сообщение
В каком именно заголовке прописывается этот идентификатор?
объект XMLHttpRequest формирует обычный http-запрос, а у всякого http-запроса есть заголовок, в котором прописывается служебная информация, иначе называемая "переменными окружения" (например, реферер, IP-адрес клиента и MIME-тип содержимого)
в DOM страницы объект XMLHttpRequest отправивший запрос, получает об этом отметку в виде внутреннего свойства
Получив ответ на запрос, страница в DOM'e находит эту отметку и таким образом однозначно сопоставляет запрос и ответ

точно так же полученный графический файл сопоставляется с Image-объектом, отправившим запрос на этот файл
0
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 81
06.04.2018, 17:29  [ТС]
Ответ нашел!!!
Для каждого запроса создается новое TCP соединение со своим сокетом.
Т.е. у каждого свой порт и идентификация запроса происходит на уровне TCP, а не HTTP
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.04.2018, 09:01
lebedun, ага, и именно поэтому вы данную тему озаглавили "Как браузер узнает на какой http запрос пришел ответ" -- чтоб никто не догадался
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.04.2018, 19:04
Цитата Сообщение от kalabuni Посмотреть сообщение
именно поэтому вы данную тему озаглавили "Как браузер узнает на какой http запрос пришел ответ" -- чтоб никто не догадался
Что не так то? ТС задал вопрос и нашел на него верный ответ и выложил тут.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.04.2018, 20:24
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Что не так то?
Да нет, всё отлично
я рад, что ТС'у удалось найти "верный" ответ, заключающийся в том, что объект XMLHttpRequest назван именно так, как он называется, исключительно по приколу
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.04.2018, 20:27
kalabuni, не понимаю к чему этот сарказм. Ведь его ответ действительно верен.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
07.04.2018, 20:52
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Ведь его ответ действительно верен
Гарантируете?
а пруфом не поделитесь?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.04.2018, 21:56
Цитата Сообщение от kalabuni Посмотреть сообщение
а пруфом не поделитесь?
http протокол работает поверх tcp (сетевая модель OSI) Следовательно на какой именно запрос пришел ответ решается исходя из tcp соединения.
А вот ТС попросил пруф на это
Цитата Сообщение от lebedun Посмотреть сообщение
В каком именно заголовке прописывается этот идентификатор?
и ответа не получил.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
08.04.2018, 00:02
Цитата Сообщение от Jewbacabra Посмотреть сообщение
ТС попросил пруф
не выдумывайте -- ни слова "прошу", ни слова пруф" ТС не употреблял ни в каких формах

объект XMLHttpRequest, во-первых, отсылает запросы именно по протоколу http и ответы получает по этому же протоколу (письмо отправитель кидает в почтовый ящик, а адресату его приносит почтальон, а как именно письма перемещаются между почтовым ящиком и почтальоном (на мотоцикле, на поезде или на собачьих упряжках, или через tcp) адресата и отправителя особо не волнует
во-вторых, объект этот принадлежит документу, а не браузеру, поэтому информация о том, что там решил браузер по поводу принадлежности ответа запросу, она, имхо, для js-программиста вторична, ему важнее -- как документ/страница сопоставляет ответ с запросом, об чём и был мой спич
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.04.2018, 00:06
Цитата Сообщение от kalabuni Посмотреть сообщение
не выдумывайте -- ни слова "прошу", ни слова пруф" ТС не употреблял ни в каких формах
Я процитировал его вопрос (там даже в конце стоит знак вопросительный). Да ладно, в таком случае я это прошу название вот этого заголовка
Цитата Сообщение от kalabuni Посмотреть сообщение
объект XMLHttpRequest формирует обычный http-запрос, а у всякого http-запроса есть заголовок, в котором прописывается служебная информация
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
08.04.2018, 00:11
Jewbacabra, пожалуйста -- https://ru.wikipedia.org/wiki/... D0%B8_HTTP
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.04.2018, 00:13
kalabuni, последний раз прошу КОНКРЕТНОЕ название http заголовка
Цитата Сообщение от kalabuni Посмотреть сообщение
в котором содержится однозначный "идентификатор" объекта XMLHttpRequest, который этот запрос сформировал и, разумеется, в ответе сервера этот "идентификатор" из http-заголовка продублирован,
Если и в этот раз не получу ответ, то я прекращаю этот разговор
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
08.04.2018, 00:20
Цитата Сообщение от Jewbacabra Посмотреть сообщение
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
объект XMLHttpRequest, отправляет запрос по протоколу http -- это явно следует из названия объекта
не знаю, что в вашем понимании "низкий уровень", но, имхо, для JS-программиста важным является то, как страница (документ) сопоставляет ответ с запросом, а не то, как именно это делается на сетевой розетке (сокете)
я не знаю, как именно и в точности работает мобильный телефон, но пользоваться телефоном умею -- только это и требуется JS-программисту
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2018, 00:20
Помогаю со студенческими работами здесь

Как отправить запрос HTTP, а в ответ получаемую страницу не показывать пользователю?
Как отправить запрос HTTP, а в ответ получаемую страницу не показывать пользователю? я делаю это на Javascript но почему то получается...

Как передать Http get запрос, вложить в него json с токеном и настройками и получить ответ
Здравствуйте, подскажите, уже поломал голову, на Node Js получается, обычные запросы тоже принимаю, а вот подключиться используя...

Почему ответ на GET запрос из Python отличается от ответа на GET запрос из HTTP Analyzer
Добрый день. Делаю GET запрос из HTTP Analyzer Указываю только адрес запроса: https://www.nn.ru/community/sp/food/ Получаю ответ -...

Ответ на http запрос
Доброго времени суток. Есть http-сервер (ниже обработчик запроса): private HttpListener listener; public void NewUser(object obj) { ...

Как и чем можно посмотреть какой запрос отправил браузер? (для новичков)
вот пример меню: www.bet-at-home.com/en/sport/results Нужно изменить Period. Кликаю, выпадает окошко, перемещаю мышку на, например, 12...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru