教育培训&老师&互联网&创业程序员

二、http简介

2019-03-15  本文已影响9人  langkong
什么是请求和响应

如下图所示,我们用自己的电脑,通过浏览器【火狐、ie、chrome等浏览器】在地址栏输入自己想要访问的网站url,回车之后便能看到该网址展示的内容。这个过程就包含了目标网址的请求,远程服务器的请求处理和内容返回,浏览器收到返回内容进行展示。


请求-响应
请求url组成

例如:http://www.dtest.com/learnyii/requirements.php【我本机配置的web服务】或者https://www.yiichina.com/doc/guide/2.0/start-workflow

url包含:

  1. 协议【http/https等】
  2. ip/域名【/www.dtest.com】端口【80/8080等,默认80可以省略】
  3. uri【/learnyii/requirements.php】

网络中每一台电脑都有ip地址,如同人的身份证,能够唯一定位到这台电脑。uri则是资源路径,定位了这台电脑,再加上这个资源路径,就能找到这个资源,并将资源返回给我们的电脑。但是ip地址很难记忆,于是有了域名,一个域名对应一个ip,这个对应关系存储在一台服务器上,这个服务器被命名为dns服务器,这台服务器的任务就是解析域名为其对应的ip地址,请求是通过ip地址寻址到对应电脑的。


具体请求了什么,返回了什么
Request Headers
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: keep-alive
Host: www.dtest.com
Referer: http://www.dtest.com/learnyii/
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.3

请求头携带了:可以接收的内容格式,编码,语言,连接状态,请求主机,我来自的上一个页面地址,使用的什么浏览器。

Response Headers
Connection: keep-alive
Content-Type: text/html; charset=UTF-8
Date: Fri, 15 Mar 2019 02:58:12 GMT
Server: nginx/1.15.9
Transfer-Encoding: chunked
X-Powered-By: PHP/7.2.15

响应头包含了连接状态,返回的内容类型和编码,服务端处理请求的软件和版本等

响应体
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <title>Yii Application Requirement Checker</title>
    <style type="text/css">
*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
……

我们真正看到的内容,该响应体是html文本内容,浏览器可以对html标记语言写的内容进行解析,解析成我们看到的那样比较漂亮的样子。

请求发出到返回过程

浏览器地址栏输入url后回车,就会发送请求,首先会去本机hosts找该域名对应的ip,没有则会找dns域名服务器,拿到对应ip,找到网络中要访问的那台电脑,uri则说明了要访问目标电脑上的资源路径,就可以定位该资源。


通过找本机hosts,发现 www.dtemp.com 对应ip为127.0.0.1,即本机,我们使用的nginx配置监听80端口,所以请求被nginx接收。nginx根据web根目录配置和uri /test.php,即可找到该资源。发现是请求的是php文件,则转发请求到9000端口,交给了php-fpm。php-fpm利用php解释器处理完成后返回给nginx,nginx将结果通过http返回给浏览器。

上一篇下一篇

猜你喜欢

热点阅读