h5网站建设服务,wordpress keshop,博物馆设计,中国新农村建设网站投稿什么是HTTP协议#xff1f;HTTP协议#xff08;HyperText Transfer Protocol#xff0c;超文本传输协议#xff09;是一种通信规则#xff0c;它定义了客户端#xff08;如浏览器、手机APP#xff09; 和服务器 之间如何交换信息#xff0c;是用于在万维网#xff08;…
什么是HTTP协议HTTP协议HyperText Transfer Protocol超文本传输协议是一种通信规则它定义了客户端如浏览器、手机APP 和服务器 之间如何交换信息是用于在万维网WWW中传输数据的应用层协议它定义了客户端与服务器之间如何通信、如何请求资源如网页、图片、视频,以及如何响应请求是互联网信息交互的通用语言。 一、HTTP协议的核心定位应用层的通信规则在TCP/IP协议栈互联网的基础通信框架中HTTP属于应用层协议其底层依赖传输层的TCP协议提供可靠的数据传输通道。TCP负责把数据安全送到对方确保数据不丢失、不混乱HTTP负责定义数据的格式和交互逻辑。
二、 HTTP的核心特点 1. 无状态HTTP协议本身不记录“前后请求的关联”——服务器不会记住上一次给这个客户端发了什么每次请求都是独立的、全新的。 例如你第一次访问某购物网站服务器不知道你是谁第二次点击“加入购物车”若没有Cookie或Token用于身份标识的技术服务器依然不认识你。 2. 请求-响应模式Request-Response通信必须由客户端主动发起服务器只能“被动响应”不会主动向客户端发送数据。流程固定为 客户端发送请求 → 服务器处理请求 → 服务器返回响应3. 可扩展HTTP允许通过头部字段扩展功能比如用Accept-Encoding: gzip告诉服务器我支持压缩数据。 4. 媒体无关HTTP可传输任意类型的数据只要客户端和服务器约定好格式包括网页、图片、视频、JSON数据等。
三、HTTP的核心交互流程请求与响应 一次完整的HTTP通信本质是客户端发请求、服务器回响应的过程两者都有固定的格式。
1. HTTP 请求客户端→服务器 请求由 3 部分组成请求行、请求头部、请求体可选。
请求头部辅助信息如Host指定服务器域名、Cookie携带客户端的身份信息如登录状态、Content-TypePOST 请求时说明请求体的数据格式如application/json。 请求体仅 POST/PUT 等请求有用于传递数据如登录时的 “用户名 密码”、上传的文件内容。请求行核心信息决定 “要做什么”。请求方法常用有GET获取资源如打开网页、POST提交数据如登录、上传表单、PUT修改资源、DELETE删除资源。
程序如何接收前端网页的数据第一种方式通过GET、POST等请求。
这种方式首先就要在方法上加上注解RequestMapping并给定路径(v1/car/add)而要给客户端反馈还得加上ResponseBody注解。同时用户在输入网址的时候要按照以下格式localhost:本地的port路径给定参数赋值
Controller
public class CarController {RequestMapping(v1/car/add)ResponseBodypublic String add(String brand,String color,int price){System.out.println(品牌是brand颜色是color价格是price);return add;}
}localhost:8080/v1/car/add?brandtslcolorblackprice100000 这种方式属于后端需要注意一定要先启动程序然后再输入网址顺序不能反如果有修改代码也一定要重新运行程序。
第二种方式通过.html文件获取。
所有的.html文件都属于静态资源所以应该在resources中的static里面创建。完成创建后里面会有个body的标签在body内即可编辑页面。比如想拿到车辆的brand、color、price等信息并添加先设置好路径并告诉它方法是postpost就是添加的作用然后用input标签就可以让用户输入并给placeholder提示。在打开网页的时候一定要确保后端的代码仍然处于运行状态。
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
form actionhttp://localhost:8080/v1/car/add methodpostinput typetext namebrand placeholder请输入品牌input typetext namecolor placeholder请输入颜色input typetext nameprice placeholder请输入价格input typesubmit value添加车辆
/form
/body
/html 这就通过用.html完成了新增车辆的功能但这属于前端的处理方式不再做过多的讨论。
这里只有三个参数需要给但实际中可能会有很多参数而一旦只要有一个字母打错了就可能导致整个程序没法收到客户端的请求。那么就可以将客户端提供的数据先保存到一个AddCarDTO类中并定义必要的参数加上tostring/get/set方法这个DTO类可以放到一个pojo包里面那么程序就会根据这个类来得到客户端输入的数据。 RequestMapping(/v1/car/add2)ResponseBodypublic String add2(AddCarDTO addCarDTO){System.out.println(addCarDTO);return add;}
localhost:8080/v1/car/add2
localhost:8080/v1/car/add2?brandbydcolorwhiteprice300000 可以看到分别给了没值和有值的就算不输入必要的信息它也会给默认值而不会获取失败这样既能方便用户输入也减少了输入错误的可能。
接下来在当前工程实现一个功能BMI身体质量指数测试 BMIController。客户端将用户的 身高height和 体重weight 传递给服务端服务端接收参数并计算用户的身体健康指数。计算公式bmi 体重kg/(身高m*身高)18.5 偏瘦 24 正常 27 微胖 27 该减肥了
先在pojo里面创建一个BmiDTO类接收网页数据时就是用这个类同时加上get/set/tostring方法。然后在Controller中创建BMIController类用于计算bmi属于后端的业务。根据接收的BmiDTO类的对象获取其中的高度和重量完成计算后根据bmi所在的范围给客户端反馈。
public class BmiDTO {private double weight;private double height;Overridepublic String toString() {return BmiDTO{ weight weight , height height };}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight weight;}public double getHeight() {return height;}public void setHeight(double height) {this.height height;}
}Controller
public class BMIController {RequestMapping(/v1/bmi/func)ResponseBodypublic String func(BmiDTO bmi){double highbmi.getHeight();double weightbmi.getWeight();double resweight/(high*high);if(res18.5)return 偏瘦;else if(res24)return 正常;else if(res27)return 微胖;elsereturn 该减肥了;}
} 2. HTTP 响应服务器→客户端 响应同样由 3 部分组成状态行、响应头部、响应体可选。 状态行核心是状态码用数字表示请求的处理结果常见状态码如下表。 响应头部辅助信息如Content-Type标识响应体的类型、Set-Cookie服务器向客户端写入 Cookie如登录后的身份令牌、Cache-Control控制资源的缓存策略如 “缓存 1 小时”。 响应体服务器返回的实际数据如 HTML 网页、JSON 数据、图片二进制流等若状态码是 404响应体可能是 “404 页面找不到” 的提示内容。
常见 HTTP 状态码分类 状态码以 “第一位数字” 区分含义核心常用码如下 1xx信息性临时响应告知客户端 “请求已收到正在处理”极少用如100 Continue。 2xx成功请求已正常处理最常用 200 OK通用成功如网页加载、API 调用成功 201 Created资源创建成功如 POST 请求新增用户、上传文件成功。 3xx重定向请求需要进一步操作客户端需跳转 301 Moved Permanently永久重定向如旧域名跳转新域名搜索引擎会更新地址 302 Found临时重定向如登录后跳转首页下次访问仍走原地址 304 Not Modified缓存命中客户端本地有最新缓存无需重新下载资源。 4xx客户端错误请求本身有问题服务器无法处理 400 Bad Request请求参数错误如 JSON 格式错误、必填字段缺失 401 Unauthorized未授权需要登录或令牌失效 403 Forbidden权限不足已登录但无操作权限如普通用户删管理员数据 404 Not Found资源不存在如访问不存在的网页、API 路径错误。 5xx服务器错误服务器处理请求时出错客户端无错 500 Internal Server Error通用服务器错误如代码 bug、数据库连接失败 502 Bad Gateway网关错误服务器作为网关时上游服务器无响应如反向代理后端挂了 503 Service Unavailable服务暂时不可用如服务器维护、负载过高 504 Gateway Timeout网关超时上游服务器响应太慢网关等不及。
在浏览器中输入www.360buy.com打开的却是京东页面 背后核心是域名重定向机制对应的 HTTP 状态码主要是 3xx 系列重定向状态码最常见的是 301 永久重定向 或 302 临时重定向其中京东对该域名的配置更可能是 301 永久重定向。 为什么会跳转—— 域名历史与重定向逻辑 360buy.com 本身是京东早期使用的域名京东曾用名 “360buy 京东”后来为了品牌统一将主域名切换为 jd.com。为了避免老用户因记忆旧域名无法访问京东会通过服务器配置让所有访问 www.360buy.com 的请求自动跳转到 www.jd.com或京东主站其他地址这个过程就是 “HTTP 重定向”。 核心状态码301 和 302 的区别 重定向的核心是通过 HTTP 响应头中的 Location 字段指定新地址同时用 3xx 状态码 告诉浏览器 “该地址已变更请访问新地址”。其中京东对 360buy.com 的配置更可能是 301 永久重定向
四、HTTP与HTTPS的核心区别
我们常说的 “HTTP 不安全”本质是它传输数据时不加密数据在网络中可能被拦截、篡改如 “中间人攻击”。而 HTTPSHTTP Secure是 “HTTPSSL/TLS 加密协议” 的组合解决了安全问题
HTTP 协议HyperText Transfer Protocol超文本传输协议和 HTTPS 协议HyperText Transfer Protocol Secure超文本传输安全协议是互联网中用于客户端如浏览器与服务器之间数据传输的核心协议二者的核心区别在于安全性但在传输原理、端口、应用场景等维度也存在显著差异。以下从 7 个关键维度进行详细对比并补充核心原理说明
1.安全性明文 vs 加密核心区别 HTTP 的安全隐患HTTP 传输的数据是 “明文”—— 比如在网页上输入的账号密码、支付信息会以 “原始文本” 的形式在网络中传输。如果数据被 “中间人”如黑客通过公共 WiFi 拦截、路由器劫持捕获可直接读取内容甚至篡改数据完全无安全保障。 HTTPS 的安全机制HTTPS 通过SSL/TLS 协议解决了 HTTP 的安全问题核心依赖两种加密技术和证书验证,混合加密对称加密 非对称加密,通过 TLS/SSL 协议对 HTTP 协议的传输过程进行加密和认证从而解决 HTTP 协议原生存在的明文传输、身份不可信、数据易篡改三大安全问题。 服务器需安装权威 CA 机构颁发的证书证书中包含服务器的公钥和身份信息。客户端浏览器会验证证书的合法性 —— 若证书无效浏览器会弹出 “不安全” 警告避免用户连接到伪装的钓鱼网站。
2. 传输流程简单 vs 多握手步骤 HTTP 传输流程客户端通过 TCP 协议与服务器的 80 端口建立连接客户端发送 HTTP 请求服务器返回 HTTP 响应连接关闭或保持长连接。整个过程无额外安全步骤流程简单。 HTTPS 传输流程在 HTTP 流程基础上增加了SSL/TLS 握手阶段约 3-4 次 TCP 交互客户端与服务器的 443 端口建立 TCP 连接SSL/TLS 握手客户端发送 “支持的加密算法列表”“随机数 A”服务器返回 “选定的加密算法”“随机数 B”“服务器 SSL 证书”客户端验证证书合法性生成 “预主密钥”用服务器公钥加密后发送给服务器客户端和服务器分别用 “随机数 A 随机数 B 预主密钥” 生成相同的 “对称加密密钥”后续的 HTTP 请求 / 响应均用 “对称加密密钥” 加密后传输连接关闭或保持长连接。握手阶段是 HTTPS 比 HTTP 慢的主要原因但现代浏览器和服务器会通过会话复用等技术减少重复握手降低性能损耗。
在网络通信中优先使用https它从根本上解决了 HTTP 协议的安全缺陷能保护数据传输的完整性、机密性和身份真实性同时满足现代网络环境对安全、合规和用户信任的核心需求。