Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
 
lebedun
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 65
1

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

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

Отправил асинхронный запрос на сервер и не дожидаясь ответа отправил второй асинхронный запрос.
На какой из этих запросов придет ответ? Как браузер понимает к какому запросу относится полученный ответ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2018, 11:56
Ответы с готовыми решениями:

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

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

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

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

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

18
msheal
692 / 298 / 184
Регистрация: 05.03.2015
Сообщений: 784
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
kalabuni
супермизантроп
Эксперт JS
3376 / 2679 / 638
Регистрация: 18.04.2012
Сообщений: 8,104
05.04.2018, 21:29 3
посмотрите тему Два запроса ajax -- там есть ссылка на мой работающий пример, где по ответу определяется запрос
0
lebedun
1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 65
05.04.2018, 22:44  [ТС] 4
Может для каждого http запроса создается новое tcp соединение?
0
kalabuni
супермизантроп
Эксперт JS
3376 / 2679 / 638
Регистрация: 18.04.2012
Сообщений: 8,104
06.04.2018, 08:16 5
lebedun, AJAX использует javascript-объект XMLHttpRequest, у которого изначально определяются:
1) свойство отправки запроса к серверу send
и 2) свойство готовности к получению ответа от сервера onreadystatechange на этот запрос

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

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

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

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

объект XMLHttpRequest, во-первых, отсылает запросы именно по протоколу http и ответы получает по этому же протоколу (письмо отправитель кидает в почтовый ящик, а адресату его приносит почтальон, а как именно письма перемещаются между почтовым ящиком и почтальоном (на мотоцикле, на поезде или на собачьих упряжках, или через tcp) адресата и отправителя особо не волнует
во-вторых, объект этот принадлежит документу, а не браузеру, поэтому информация о том, что там решил браузер по поводу принадлежности ответа запросу, она, имхо, для js-программиста вторична, ему важнее -- как документ/страница сопоставляет ответ с запросом, об чём и был мой спич
0
Jewbacabra
Эксперт PHP
3785 / 3120 / 1371
Регистрация: 24.04.2014
Сообщений: 9,481
08.04.2018, 00:06 16
Цитата Сообщение от kalabuni Посмотреть сообщение
не выдумывайте -- ни слова "прошу", ни слова пруф" ТС не употреблял ни в каких формах
Я процитировал его вопрос (там даже в конце стоит знак вопросительный). Да ладно, в таком случае я это прошу название вот этого заголовка
Цитата Сообщение от kalabuni Посмотреть сообщение
объект XMLHttpRequest формирует обычный http-запрос, а у всякого http-запроса есть заголовок, в котором прописывается служебная информация
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
0
kalabuni
супермизантроп
Эксперт JS
3376 / 2679 / 638
Регистрация: 18.04.2012
Сообщений: 8,104
08.04.2018, 00:11 17
Jewbacabra, пожалуйста -- https://ru.wikipedia.org/wiki/%D0%97...%BA%D0%B8_HTTP
0
Jewbacabra
Эксперт PHP
3785 / 3120 / 1371
Регистрация: 24.04.2014
Сообщений: 9,481
08.04.2018, 00:13 18
kalabuni, последний раз прошу КОНКРЕТНОЕ название http заголовка
Цитата Сообщение от kalabuni Посмотреть сообщение
в котором содержится однозначный "идентификатор" объекта XMLHttpRequest, который этот запрос сформировал и, разумеется, в ответе сервера этот "идентификатор" из http-заголовка продублирован,
Если и в этот раз не получу ответ, то я прекращаю этот разговор
0
kalabuni
супермизантроп
Эксперт JS
3376 / 2679 / 638
Регистрация: 18.04.2012
Сообщений: 8,104
08.04.2018, 00:20 19
Цитата Сообщение от Jewbacabra Посмотреть сообщение
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
объект XMLHttpRequest, отправляет запрос по протоколу http -- это явно следует из названия объекта
не знаю, что в вашем понимании "низкий уровень", но, имхо, для JS-программиста важным является то, как страница (документ) сопоставляет ответ с запросом, а не то, как именно это делается на сетевой розетке (сокете)
я не знаю, как именно и в точности работает мобильный телефон, но пользоваться телефоном умею -- только это и требуется JS-программисту
0
08.04.2018, 00:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2018, 00:20

Запрос к HTTP серверу через браузер и telnet
Есть простой самописный HTTP сервер, который слушает коннекты по определённому порту х. Нужно: 1....

Как главная активити узнает какой именно фрагмент использовать?
Насколько я понял,можно создавать фрагмент в отдельном xml макете и активити.Потом просто в...

Как узнать с какой страны пришел пользователь
Вот есть у меня сайт site.ru. И есть у меня две версии en/ и ru/ Так вот как узнать с какой...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru