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

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

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

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

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

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

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

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

18
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
05.04.2018, 12:31 2
Цитата Сообщение от 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,625
05.04.2018, 21:29 3
посмотрите тему Два запроса ajax -- там есть ссылка на мой работающий пример, где по ответу определяется запрос
0
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 81
05.04.2018, 22:44  [ТС] 4
Может для каждого http запроса создается новое tcp соединение?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
06.04.2018, 08:16 5
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  [ТС] 6
Цитата Сообщение от kalabuni Посмотреть сообщение
когда отправляется запрос к серверу, вместе с ним отсылается http-заголовок, в котором содержится однозначный "идентификатор" объекта XMLHttpRequest, который этот запрос сформировал и, разумеется, в ответе сервера этот "идентификатор" из http-заголовка продублирован
В каком именно заголовке прописывается этот идентификатор?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
06.04.2018, 15:50 7
объект
Цитата Сообщение от lebedun Посмотреть сообщение
В каком именно заголовке прописывается этот идентификатор?
объект XMLHttpRequest формирует обычный http-запрос, а у всякого http-запроса есть заголовок, в котором прописывается служебная информация, иначе называемая "переменными окружения" (например, реферер, IP-адрес клиента и MIME-тип содержимого)
в DOM страницы объект XMLHttpRequest отправивший запрос, получает об этом отметку в виде внутреннего свойства
Получив ответ на запрос, страница в DOM'e находит эту отметку и таким образом однозначно сопоставляет запрос и ответ

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

объект XMLHttpRequest, во-первых, отсылает запросы именно по протоколу http и ответы получает по этому же протоколу (письмо отправитель кидает в почтовый ящик, а адресату его приносит почтальон, а как именно письма перемещаются между почтовым ящиком и почтальоном (на мотоцикле, на поезде или на собачьих упряжках, или через tcp) адресата и отправителя особо не волнует
во-вторых, объект этот принадлежит документу, а не браузеру, поэтому информация о том, что там решил браузер по поводу принадлежности ответа запросу, она, имхо, для js-программиста вторична, ему важнее -- как документ/страница сопоставляет ответ с запросом, об чём и был мой спич
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.04.2018, 00:06 16
Цитата Сообщение от kalabuni Посмотреть сообщение
не выдумывайте -- ни слова "прошу", ни слова пруф" ТС не употреблял ни в каких формах
Я процитировал его вопрос (там даже в конце стоит знак вопросительный). Да ладно, в таком случае я это прошу название вот этого заголовка
Цитата Сообщение от kalabuni Посмотреть сообщение
объект XMLHttpRequest формирует обычный http-запрос, а у всякого http-запроса есть заголовок, в котором прописывается служебная информация
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
08.04.2018, 00:11 17
Jewbacabra, пожалуйста -- https://ru.wikipedia.org/wiki/... D0%B8_HTTP
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
08.04.2018, 00:13 18
kalabuni, последний раз прошу КОНКРЕТНОЕ название http заголовка
Цитата Сообщение от kalabuni Посмотреть сообщение
в котором содержится однозначный "идентификатор" объекта XMLHttpRequest, который этот запрос сформировал и, разумеется, в ответе сервера этот "идентификатор" из http-заголовка продублирован,
Если и в этот раз не получу ответ, то я прекращаю этот разговор
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
08.04.2018, 00:20 19
Цитата Сообщение от Jewbacabra Посмотреть сообщение
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
объект XMLHttpRequest, отправляет запрос по протоколу http -- это явно следует из названия объекта
не знаю, что в вашем понимании "низкий уровень", но, имхо, для JS-программиста важным является то, как страница (документ) сопоставляет ответ с запросом, а не то, как именно это делается на сетевой розетке (сокете)
я не знаю, как именно и в точности работает мобильный телефон, но пользоваться телефоном умею -- только это и требуется JS-программисту
0
08.04.2018, 00:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2018, 00:20
Помогаю со студенческими работами здесь

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

Почему ответ на GET запрос из Python отличается от ответа на GET запрос из HTTP Analyzer
Добрый день. Делаю GET запрос из HTTP Analyzer Указываю только адрес запроса:...

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru