1 / 1 / 1
Регистрация: 12.08.2012
Сообщений: 81
|
|
1 | |
Как браузер узнает на какой http запрос пришел ответ05.04.2018, 11:56. Показов 2665. Ответов 18
Метки нет (Все метки)
Отправил асинхронный запрос на сервер и не дожидаясь ответа отправил второй асинхронный запрос.
На какой из этих запросов придет ответ? Как браузер понимает к какому запросу относится полученный ответ?
0
|
05.04.2018, 11:56 | |
Ответы с готовыми решениями:
18
Как отследить с какой страницы пришёл ответ с гугл формы Как узнать от какого контрола с какой формы пришел запрос? На запрос еще не пришел ответ, а код продолжает дальше выполнятся Как отправить запрос HTTP, а в ответ получаемую страницу не показывать пользователю? |
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
|
||||||
05.04.2018, 12:31 | 2 | |||||
На оба, если не отменить предыдущий запрос
В качестве примера можно разобрать jquery обертку для пост запроса:
0
|
супермизантроп
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
|
супермизантроп
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 |
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
06.04.2018, 15:50 | 7 |
объект
объект 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
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
07.04.2018, 09:01 | 9 |
lebedun, ага, и именно поэтому вы данную тему озаглавили "Как браузер узнает на какой http запрос пришел ответ" -- чтоб никто не догадался
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
07.04.2018, 19:04 | 10 |
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
07.04.2018, 20:24 | 11 |
Да нет, всё отлично
я рад, что ТС'у удалось найти "верный" ответ, заключающийся в том, что объект XMLHttpRequest назван именно так, как он называется, исключительно по приколу
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
07.04.2018, 20:27 | 12 |
kalabuni, не понимаю к чему этот сарказм. Ведь его ответ действительно верен.
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
07.04.2018, 20:52 | 13 |
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
07.04.2018, 21:56 | 14 |
http протокол работает поверх tcp (сетевая модель OSI) Следовательно на какой именно запрос пришел ответ решается исходя из tcp соединения.
А вот ТС попросил пруф на это и ответа не получил.
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
08.04.2018, 00:02 | 15 |
не выдумывайте -- ни слова "прошу", ни слова пруф" ТС не употреблял ни в каких формах
объект XMLHttpRequest, во-первых, отсылает запросы именно по протоколу http и ответы получает по этому же протоколу (письмо отправитель кидает в почтовый ящик, а адресату его приносит почтальон, а как именно письма перемещаются между почтовым ящиком и почтальоном (на мотоцикле, на поезде или на собачьих упряжках, или через tcp) адресата и отправителя особо не волнует во-вторых, объект этот принадлежит документу, а не браузеру, поэтому информация о том, что там решил браузер по поводу принадлежности ответа запросу, она, имхо, для js-программиста вторична, ему важнее -- как документ/страница сопоставляет ответ с запросом, об чём и был мой спич
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
08.04.2018, 00:06 | 16 |
Я процитировал его вопрос (там даже в конце стоит знак вопросительный). Да ладно, в таком случае я это прошу название вот этого заголовка
ТС имел ввиду как происходит сопостовление ответа конкретному запросу на "низком уровне", если так можно выразится, иначе вопрос смысла не имеет.
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
08.04.2018, 00:11 | 17 |
Jewbacabra, пожалуйста -- https://ru.wikipedia.org/wiki/... D0%B8_HTTP
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
08.04.2018, 00:13 | 18 |
kalabuni, последний раз прошу КОНКРЕТНОЕ название http заголовка
Если и в этот раз не получу ответ, то я прекращаю этот разговор
0
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
|
|
08.04.2018, 00:20 | 19 |
объект XMLHttpRequest, отправляет запрос по протоколу http -- это явно следует из названия объекта
не знаю, что в вашем понимании "низкий уровень", но, имхо, для JS-программиста важным является то, как страница (документ) сопоставляет ответ с запросом, а не то, как именно это делается на сетевой розетке (сокете) я не знаю, как именно и в точности работает мобильный телефон, но пользоваться телефоном умею -- только это и требуется JS-программисту
0
|
08.04.2018, 00:20 | |
08.04.2018, 00:20 | |
Помогаю со студенческими работами здесь
19
Как передать Http get запрос, вложить в него json с токеном и настройками и получить ответ Почему ответ на GET запрос из Python отличается от ответа на GET запрос из HTTP Analyzer Ответ на http запрос Как и чем можно посмотреть какой запрос отправил браузер? (для новичков) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |