今天被问到这个有趣的面试问题。



以下是我所知道的和我所说的:



我的回答很基本,没有应有的详细。我思考了我的回答并提出了新的问题:

  • 什么是“请求”?它基本上只是发送到服务器的文本头文件吗?
  • “响应”怎么样?响应本身是被发送回客户端机器的解析后的 file.php 文件吗?
  • 如果 file.php 文件包含对 script.js 文件和 style.css 文件的引用怎么办?这些文件在哪个阶段返回到客户端机器?它们是作为单独的标题出现的还是什么?
  • 上面在我的回答中,我不确定我说“...因为它有一个 .php 扩展名,它首先使用 PHP 引擎来解析文件中的任何 PHP 代码”时我是否正确。这真的是服务器解析文件内代码的原因,还是服务器默认扫描所有类型的文件以检查它们可能包含的任何 PHP 代码?
  • 最佳答案

    首先,我觉得你的回答很好。它绝对描述了您被问到的基本过程。



    是的,HTTP 请求是发送到服务器的文本消息,主要包括:请求的路径、该路径的任何参数、客户端信息(用户代理、 session 、cookie 等)。



    有点。 HTTP 响应由描述:响应状态(成功或错误,例如未找到文件、内部服务器错误等)、一些内容元数据(内容类型、编码...)和内容的标题文本组成。
    内容可以是 HTML 文档。它也可以是 CSS 或 Javascript 文件、PNG 图像或 Web 服务器提供的任何其他文件。标题中的元数据以浏览器(或任何客户端)可以弄清楚如何处理它的方式描述内容。



    首先,您刚刚描述的过程将完成。意思是,发送了一个请求,然后返回了一个响应。假设响应是一个 HTML 文档,浏览器解析该文档并查找外部内容:CSS 样式表、Javascript 文件、图像文件、Flash 嵌入等。
    对于这些外部文件中的每一个,浏览器使用完全相同的过程发送一个新请求。例如,在获取 CSS 文件后,浏览器知道将其应用于它刚刚解析的文档。



    嗯,这取决于服务器配置,但大多数时候,是的;
    服务器通常配置为以相同的方式处理所有 .php 文件,这意味着将它们传递给 PHP 解析器并等待其响应。

    顺便说一下,这对于不同的服务器端软件技术是不同的。虽然这是 PHP 的工作方式,但其他技术(例如 Ruby on Rails、某些 .NET 语言)的处理方式不同。

    很好的问题,很适合你表现出兴趣!
    有关更多信息,我建议您查看 HTTP on Wikipedia

    关于php - Web 浏览器如何请求和接收网页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6007146/

    10-10 00:05
    查看更多