抚州律师网站建设,则么建立自己的网站,广州注册公司补贴,爱获客电销系统要想了解HTTP#xff0c;得先知道什么是HTTP#xff0c;那么HTTP是什么呢#xff1f;HTTP (全称为 超文本传输协议) 是一种应用非常广泛的 应用层协议。那什么是超文本呢#xff1f;那就是除了文本#xff0c;还有图片#xff0c;声音#xff0c;视频等。
… 要想了解HTTP得先知道什么是HTTP那么HTTP是什么呢HTTP (全称为 超文本传输协议) 是一种应用非常广泛的 应用层协议。那什么是超文本呢那就是除了文本还有图片声音视频等。
理解 HTTP 协议的工作过程 当我们在浏览器中输入一个 网址, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应。这个响应的内容往往是HTML内容。事实上, 当我们访问一个网站的时候, 可能涉及不止一次的 HTTP 请求/响应 的交互过程.
认识URL 平时我们俗称的 网址 其实就是说的 URL (Uniform Resource Locator 统一资源定位符). 互联网上的每个文件都有一个唯一的URL它包含的信息指出文件的位置以及浏览器应该怎么处理它. URL 的详细规则由 因特网标准RFC1738 进行了约定(https://datatracker.ietf.org/doc/html/rfc1738)
一个具体的 URL: https://v.bitedu.vip/personInf/student?userId10000classId100
https : 协议方案名. 常见的有 http 和 https, 也有其他的类型. (例如访问 mysql 时用的 jdbc:mysql )省略后默认为http
user:pass : 登陆信息. 现在的网站进行身份认证一般不再通过 URL 进行了. 一般都会省略
v.bitedu.vip : 服务器地址. 此处是一个 域名, 域名会通过 DNS 系统解析成一个具体的 IP 地址. (通过 ping 命令可以看到, v.bitedu.vip 的真实 IP 地址为 118.24.113.28 )如果省略的话则是访问当前服务器的地址如访问博客的服务器响应内容就是博客主页的HTML这个HTML又触发一些其他的HTTP请求这些后续触发的HTTP请求就可以省略IP省略IP就相当于使用和刚才获取的博客HTML一样的IP
端口号: 上面的 URL 中端口号被省略了. 当端口号省略的时候, 浏览器会根据协议类型自动决定使用 哪个端口. 例如 http 协议默认使用 80 端口, https 协议默认使用 443 端口.用来区分应用程序。
/personInf/student : 带层次的文件路径。访问服务器上的哪个资源。也可以省略如果省略相当于访问的就是服务器的根目录如https://music.163.com/ userId10000classId100 : 查询字符串 (query string). 本质是一个键值对结构 . 键值对之间使 用 分隔 . 键和值之间使用 分隔。查询字符串以问号开始。也可以省略。 像 / ? : 等这样的字符 , 已经被 url 当做特殊意义理解了 . 因此这些字符不能随意出现 . 比如 , 某个参数中需要带有这些特殊字符 , 就必须先对特殊字符进行转义. 转义的规则如下 : 将需要转码的字符转为 16 进制然后从右到左取 4 位 ( 不足 4 位直接处理 ) 每 2 位做一 位前面加上 % 编码成 %XY格式。 urldecode 就是 urlencode 的逆过程; UrlEncode编码/UrlDecode解码 - 站长工具 (chinaz.com) 片段标识 : 此 URL 中省略了片段标识 . 片段标识主要用于页面内跳转 . ( 例如 Vue 官方文档 : https://c n.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5 , 通过不同的片段标识跳转到文档的不同章节 ) HTTP 协议格式 Http由4个部分组成第一个部分为首行第二个部分为header第三个部分为空行第四个部分为正文。以下为HTTP请求 首行由三部分组成第一个部分为method方法第二部分为URL第三部分为版本号。这三个部分使用空格来分割。如GET https://blog.csdn.net/nav/game HTTP/1.1
method GET请求一般没有正文POST响应一般有正文。POSTt和GET最主要的区别为GET将要上传的自定义的数据放到query stringbody通常是空的而POST是把一些自定义的文件放到body里query string通常是空的。放在query string用户能直接看到放在body里用户没法直接看到。GET请求的优点是可以被缓存因为GET请求不会对服务器上的资源进行修改所以多次请求同一个URL时浏览器可以直接从缓存中获取数据提高了页面的加载速度。POST请求的优点是可以传递大量数据而GET请求由于URL长度的限制只能传递少量数据。 header也是键值对结构每一行是一个键值对键和值间用冒号分开。1Host表示服务器主机的地址和端口通常情况下Host里的内容与URL里的内容是一致的但是也有例外比如如果使用了代理。2Content-Length 表示 body 中的数据长度单位为字节没有body这个就可以没有有body就必须有。解决粘包问题。3Content-Type 表示请求的 body 中的数据格式.常见选项: application/x-www-form-urlencoded: form 表单提交的数据格式multipart/form-data: form 表单提交的数据格式(在 form 标签中加上 enctypedmultipart/form-data . 通常用于提交图片/文件。application/json: 数据为 json 格式。4User-Agent (简称 UA) 表示浏览器/操作系统的属性。如操作系统的版本和浏览器的版本。5Referer 表示这个页面是从哪个页面跳转过来的。如果直接在浏览器中输入URL, 或者直接通过收藏夹访问页面时是没有 Referer 的。6Cookie Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)。往往可以通过这个字段实现 身份标识 的功能. 空行相当于一个分隔符分割了header和正文body描述了body是从哪里开始。 body格式于query string的格式相似同样也要经过urlencode是要上传的数据。 认识 状态码 (status code) 状态码表示访问一个页面的结果。 1 200 OK 这是一个最常见的状态码 , 表示访问成功 . 2 404 Not Found 没有找到资源 . 3403 Forbidden 表示访问被拒绝 . 有的页面通常需要用户具有一定的权限才能访问 ( 登陆后才能访问 ). 如果用户没有登陆 直接访问 , 就容易见到 403。 4 405 Method Not Allowed 前面我们已经学习了 HTTP 中所支持的方法 , 有 GET, POST, PUT, DELETE 等 . 但是对方的服务器不一定都支持所有的方法 ( 或者不允许用户使用一些其他的方法 ). 5 500 Internal Server Error 服务器出现内部错误 . 一般是服务器的代码执行过程中遇到了一些特殊情况 ( 服务器异常崩溃 ) 会产生这个 状态码 . 6 504 Gateway Timeout 当服务器负载比较大的时候 , 服务器处理单条请求的时候消耗的时间就会很长 , 就可能会导致出现超时的 情况 . 7 302 Move temporarily 临时重定向。 在登陆页面中经常会见到 302. 用于实现登陆成功后自动跳转到主页 . 响应报文的 header 部分会包含一个 Location 字段 , 表示要跳转到哪个页面 . 8 301 Moved Permanently 永久重定向 . 当浏览器收到这种响应时 , 后续的请求都会被自动改成新的地址 . 301 也是通过 Location 字段来表示要重定向到的新地址 . 认识响应 报头 (header) 响应报头的基本格式和请求报头的格式基本一致. 类似于 Content - Type , Content - Length 等属性的含义也和请求中的含义一致 . Content-Type 响应中的 Content-Type 常见取值有以下几种 : 1text/html : body 数据格式是 HTML 2text/css : body 数据格式是 CSS 3application/javascript : body 数据格式是 JavaScript 4application/json : body 数据格式是 JSON