Как веб-браузер запрашивает и получает веб-страницу?

89
11

Сегодня он задал этот интересный вопрос.


Объясните подробно процесс, с помощью которого клиентская машина запрашивает файл (скажем, file.php) с сервера, а затем получает этот желаемый файл вместе со своими необходимыми JS/CSS/изображениями/видеофайлами и они появляются на клиенте экрана браузера.



Вот что я знаю и что я сказал:


Итак, запрос отправляется, а затем сервер видит, что файл file.php запрашивается, и поскольку он имеет расширение .php, он сначала использует механизм PHP для анализа любого кода PHP внутри файла, а затем один раз это делается, он возвращает обратно на клиентский компьютер результирующий файл file.php(как ответ). Затем браузер берет этот ответ и анализирует HTML и необходимый код JS и CSS, а затем отображает его в браузере.



Мой ответ довольно простой и не столь подробный, как он должен быть. Я подумал о своем ответе и задал новые вопросы:


    Что, буквально, является "запросом"? Это в основном только текстовый файл заголовка, который отправляется на сервер?


    Как насчет "ответа"? Является ли сам ответ анализируемым файлом file.php, который отправляется обратно на клиентскую машину?


    Что делать, если файл file.php содержит ссылку на файл script.js и файл style.css? На каком этапе эти файлы возвращаются на клиентскую машину? Они входят в отдельные заголовки или что?


    В моем ответе я не уверен, был ли я прав, когда сказал: "... потому что он имеет расширение .php, он сначала использует механизм PHP для анализа любого кода PHP внутри файла." Это действительно причина, по которой сервер анализирует код внутри файла или сервер проверяет все типы файлов по умолчанию, чтобы проверить какой-либо код PHP, который они могут содержать?


спросил(а) 2021-01-25T19:54:01+03:00 5 месяцев назад
1
Решение
125

Прежде всего, я думаю, что ваш ответ был неплохим. Он определенно описывает основной процесс, о котором вас спрашивали.


1) Что, буквально, является "запросом"? Это в основном только текстовый заголовочный файл, который отправляется на сервер?



Да, HTTP-запрос представляет собой текстовое сообщение для сервера, включая, в основном: запрошенный путь, любые параметры этого пути, информацию о клиенте (пользовательский агент, сеанс, файлы cookie и т.д.).


2) Как насчет "ответа"? Является ли сам ответ анализируемым файлом file.php, который отправляется обратно на клиентскую машину?



Сорт. Ответ HTTP состоит из текста заголовка, который описывает: статус ответа (успех или ошибки, такие как файл не найден, внутренняя ошибка сервера и т.д.), Некоторые метаданные контента (тип содержимого, кодировка...) и контент.

Содержимое может быть HTML-документом. Это также может быть CSS или Javascript файл, PNG-изображение или любые другие файлы, которые обслуживает веб-сервер. Метаданные в заголовке описывают контент таким образом, что браузер (или любой клиент) может определить, как его обрабатывать.


3) Что делать, если файл file.php содержит ссылку на файл script.js и файл style.css? На каком этапе эти файлы возвращаются на клиентскую машину? Они входят в отдельные заголовки или что?


Во-первых, процесс, который вы только что описали, завершится. Смысл, запрос был отправлен, а затем ответ был возвращен. Предполагая, что ответ представляет собой HTML-документ, браузер анализирует документ и ищет внешний контент: стили CSS, файлы Javascript, файлы изображений, флеш-ролики и т.д.

Для каждого из этих внешних файлов браузер отправляет новый запрос, используя тот же самый процесс. После получения CSS файла, например, браузер знает, как применить его к документу, который он просто проанализировал.


4). В моем ответе я не уверен, был ли я прав, когда сказал: "... потому что у него есть расширение .php, он сначала использует механизм PHP для анализа любого кода PHP внутри файла." Это действительно причина, по которой сервер анализирует код внутри файла или сервер проверяет все типы файлов по умолчанию, чтобы проверить какой-либо код PHP, который они могут содержать?



Ну, это зависит от конфигурации сервера, но в большинстве случаев да;

Обычно сервер настроен на обработку всех файлов .php одинаково, что означает передачу их в парсер PHP и ожидание его ответа.


Кстати, это отличается для разных серверных программных технологий. Хотя это так, как работает PHP, другие технологии (например, Ruby on Rails, некоторые языки .NET) обрабатываются по-другому.


Отличный вопрос, и хорошо для вас, чтобы проявить интерес!

Для получения дополнительной информации я предлагаю вам проверить HTTP в Википедии.

ответил(а) 2021-01-25T19:54:01+03:00 5 месяцев назад
77

HTTP-запрос выглядит как GET /index.html HTTP/1.1. Он отправляется как обычный текст на веб-сервер.


Упрощенный ответ HTTP (с удалением большинства файлов заголовков) может выглядеть так:


HTTP/1.1 200 OK
Content-Length: 20
Content-Type: text/html; charset=UTF-8

<html>Hello</html>

Если страница содержит изображения или таблицы стилей или другие внешние файлы, веб-браузер отправляет им новые запросы, по одному запросу на файл. Веб-сервер возвращает их почти так же, как и HTML. Когда браузер запросил и получил все нужные ему файлы, страница завершена.


До веб-сервера решать, как он хочет обрабатывать такие вещи, как PHP. Браузеру не нужно знать, что происходит за шторами. С его точки зрения он просто запрашивает контент и (надеюсь) получает его.


Простой веб-сервер может быть настроен так, как вы сказали. Если он получает запрос на файл, заканчивающийся на ".php", он сначала запускает его через интерпретатор PHP. Но это полностью зависит от владельца веб-сервера.

ответил(а) 2021-01-25T19:54:01+03:00 5 месяцев назад
77

Я думаю, что это то, что вы ищете: Что действительно происходит при навигации по URL-адресу


Подводя итог:

1. Введите URL-адрес в браузер: facebook.com

2. Браузер просматривает IP-адрес для имени домена

3. Браузер отправляет HTTP-запрос на веб-сервер


4. Сервер facebook отвечает на постоянную переадресацию

5. Браузер следует за перенастройкой

6. Сервер обрабатывает запрос

7. Сервер отправляет ответ HTML-ответа

8. Браузер начинает рендеринг HTML

9. Браузер отправляет запросы на объекты, встроенные в HTML

10. Браузер отправляет дополнительные асинхронные запросы (AJAX)

ответил(а) 2021-01-25T19:54:01+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема