浏览器与服务端请求响应流程图:

1.HTTP概要

1.1. 定义

HTTP(HyperText Transfer  Protocol,超文本传输协议)最早就是计算机与计算机之间沟通的一种标准协议,这种协议限制了通讯内容的格式以及各项内容的含义

随着时代的发展,技术的变迁,这种协议现在广泛的应用在各种领域,也不仅仅局限于计算机与计算机之间,手  机、电视等各种智能设备很多时候都在使用这种协议通讯,所以一般现在称 HTTP 为端与端之间的通讯协议

Web 属于 B/S 架构的应用软件,在 B/S 架构中,浏览器与服务器沟通的协议就是 HTTP 协议,作为一个合格的

Web 开发者,了解 HTTP 协议中约定的内容是一门必修课。

1.2. 约定内容

请求 / 响应报文格式

请求方法 —— GET / POST

响应状态 —— 200 / 404 / 302 / 304

预设的请求 / 响应头

1.3. 约定形式

  1. 客户端通过随机端口与服务端某个固定端口(一般为80)建立连接 三次握手
  2. 客户端通过这个连接发送请求到服务端(这里的请求是名词)
  3. 服务端监听端口得到的客户端发送过来的请求
  4. 服务端通过连接响应给客户端状态和内容

2.核心概念

2.1. 报文

2.1.1. 请求报文

请求行

请求方式 + 空格 + 请求路径 + 空格 + HTTP 协议版本

请求头

客户端想要告诉服务端的一些额外信息,以下为常见的请求头:

Host

请求的主机

Cache-Control

控制缓存(例如:max-age=60 缓存 60 秒)

Accept

客户端想要接收的文档类型,逗号分隔

User-Agent

标识什么客户端帮你发送的这次请求

Referer

这次请求的来源

Accept-Encoding

可以接受的压缩编码

Cookie

客户端本地的小票信息

请求体

这次请求客户端想要发送给服务端的数据正文,一般在 GET 请求时很少用到,因为 GET 请求主观上都是去“拿东西”。

2.1.2. 响应报文

状态行

HTTP 协议版本 + 空格 + 状态码 + 空格 + 状态描述

响应头

服务端想要告诉客户端的一些额外信息,常见的有以下:

Date

响应时间

Server

服务器信息

Content-Type

响应体的内容类型

Content-Length

响应的内容大小

Set-Cookie

让客户端设置一个小票

如果需要在程序中设置自定义的响应头(不是预设的),建议使用 X-Property-Name

响应体

这次请求服务端想要返回给客户端的数据正文,一般返回的都是 HTML,也可以返回 JavaScript 或者 CSS(需要修改响应头中的响应类型)。

2.1.3. 应用场景

设置响应文件类型

HTTP MIME type 指的就是 像 text/css text/html text/plain applcation/javascript

重定向(跳转到其他网页)

下载文件

图片防盗链

通过判断请求来源是否为本网站从而区分是否是合法请求

2.2. 请求方式

2.2.1. GET

字面意思:拿,获取

2.2.2. POST

字面意思:发,给

2.2.3. 对比 GET 与 POST

浏览器与服务端请求响应流程与HTTP协议的更多相关文章

  1. 基于Netty和SpringBoot实现一个轻量级RPC框架-Client端请求响应同步化处理

    前提 前置文章: <基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇> <基于Netty和SpringBoot实现一个轻量级RPC框架-Server篇> & ...

  2. netty服务端客户端启动流程分析

    服务端启动流程 我们回顾前面讲解的netty启动流程,服务端这边有两个EventLoopGroup,一个专门用来处理连接,一个用来处理后续的io事件 服务端启动还是跟nio一样,绑定端口进行监听,我们 ...

  3. JSP请求响应流程入门介绍

    一个完整的jsp请求响应流程可以简单的使用下图表示: 过滤器:直观的了解,就是对请求做一个过滤作用,比如身份验证,验证不通过的不让他继续往下走 Servlet:请求处理中心,这个也是我们写业务逻辑的地 ...

  4. Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程

    一.服务端请求伪造漏洞 服务端请求伪造(Server-Side Request Forgery),是指Web服务提供从用户指定的URL读取数据并展示功能又未对用户输入的URL进行过滤,导致攻击者可借助 ...

  5. 【CTF WEB】服务端请求伪造

    服务端请求伪造 如你所愿,这次可以读取所有的图片,但是域名必须是www开头 测试方法 POST /index.php HTTP/1.1 Host: 218.2.197.236:27375 Conten ...

  6. 通过HTTP请求响应过程了解HTTP协议

    通过HTTP请求响应过程了解HTTP协议 http://www.cnblogs.com/YeChing/p/6337378.html

  7. Binder学习笔记(九)—— 服务端如何响应Test()请求 ?

    从服务端代码出发,TestServer.cpp int main() { sp < ProcessState > proc(ProcessState::self()); sp < I ...

  8. web应用中浏览器与服务端的编码和解码

    转自:http://blog.sina.com.cn/s/blog_87cb63e50102w2b6.html 以下为正文: ************************************* ...

  9. restsharp发送服务端请求回传session

    今天工作遇到这样一个场景,我需要获取一个游戏目录列表,这个列表接口在线上已经存在,但是这个接口需要登录认证后才能获取到,所以实现这个功能我打算分两部来做: 1.首先调登录接口,以写上session 2 ...

随机推荐

  1. java日期间相隔年月日计算

    /**     * 获取date1相距date2多少天, date2>date1     * @param date1     * @param date2     * @return     ...

  2. C# Common Log function

    public int Log(string info) { info = "-----------------------------" + DateTime.Now.ToStri ...

  3. 详解如何在 Linux 启动时自动执行命令或脚本

    我一直很好奇,在启动 Linux 系统并登录的过程中到底发生了什么事情.按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,有时,这个过程不到一分钟.当你注销或者关机时 ...

  4. RESTful-1概述

    一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 概述 编辑 REST ...

  5. Excel—工作常用

    上周起始日期 =TODAY()-WEEKDAY(TODAY(),2)-6 TODAY()表示的是当天的日期,WEEKDAY(TODAY(),2)表示本周的星期几,TODAY()-WEEKDAY(TOD ...

  6. 小程序API

    基础: wx.canIUse(string)    boolean wx.canIUse(string schema)   判断小程序的API,回调,参数,组件等是否在当前版本可用. 参数说明 ${A ...

  7. Android Studio升级到3.4遇到的问题总结

    1.gradle需要升级. 1).project的build.gradle文件写下如下代码: buildscript { repositories { google() jcenter() } dep ...

  8. photoshop改变图片大小,不改变像素

    用画图修改了图片像素,360*440 但是图片30K,要求图片20K 打开photoshop,打开图片,点击文件--存储为web所用格式,调节品质大小到20K以下,保存即可

  9. System.InvalidOperationException: 支持“XXX”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。

    System.InvalidOperationException: 支持“XXX”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库(http://go.micro ...

  10. 数据分析——pandas

    简介 import pandas as pd # 在数据挖掘前一个数据分析.筛选.清理的多功能工具 ''' pandas 可以读入excel.csv等文件:可以创建Series序列,DataFrame ...