HTTP 和 HTTPS 五大核心区别
2026/6/5 9:37:53 网站建设 项目流程

目录

HTTP 和 HTTPS 五大核心区别(精简版)

1、传输内容:明文 VS 密文(最核心)

HTTP:

HTTPS:

2、端口不同

3、安全机制:无校验 VS CA 证书校验

4、资源开销

5、数据泄露风险

补充高频考点:HTTPS 的 GET 参数会不会泄密?

一句话总结

为什么敏感数据不能用 GET?

GET 数据会暴露在:

正确做法:用 POST(数据放在请求体,不在 URL)

1. ❌ 错误写法(GET 传密码 → 泄密)

后果:

2. ✅ 安全写法(POST JSON → 数据不在 URL)

优点:

3. ✅ 安全写法(POST 表单)

同样安全!

4. 最关键区别(一张图看懂)

❌ GET(不安全)

✅ POST(安全)

5. 总结(必须记住)

敏感数据永远用 POST:

GET 只能传什么?

6. 给你一句最安全的开发原则

敏感数据绝不放 URL,一律放 POST 请求体!


HTTP 和 HTTPS 五大核心区别(精简版)

1、传输内容:明文 VS 密文(最核心)

  • HTTP:整段报文(URL、GET 参数、Header、POST 数据、Cookie)全明文,无线网抓包直接看见账号密码。
  • HTTPS:TLS 隧道加密,HTTP 报文整体被打包加密,链路抓包只有乱码,中间人看不到接口参数与隐私数据。

    HTTP:

    URL、参数、Cookie、内容全部在网络上裸奔抓包软件直接看到:

    plaintext

    GET /login?user=zhangsan&pwd=123456 HTTP/1.1

    完全泄密

    HTTPS:

    整个 HTTP 请求(包括 URL、Header、Body)全部被 TLS 加密抓包只能看到:

    plaintext

    TLS 加密数据包(一堆乱码)

    黑客看不到任何真实内容

2、端口不同

  • HTTP:默认80 端口
  • HTTPS:默认443 端口

3、安全机制:无校验 VS CA 证书校验

  • HTTP:没有身份认证,中间人可以伪造服务器、篡改返回数据(挂广告、替换下载链接)。
  • HTTPS:第三方 CA 颁发合法证书,握手时校验服务端身份,无法轻易冒充站点,杜绝中间人劫持篡改。

4、资源开销

  • HTTP:无加密运算,连接快、CPU 占用小。
  • HTTPS:握手需要非对称加密 + 对称加密运算,多一次 TLS 握手,少量消耗 CPU,现在硬件性能下体感差距极小。

5、数据泄露风险

  • HTTP:GET 拼接密码、表单密码、Cookie 全裸奔,公共 WiFi 高危泄密。
  • HTTPS:
    1. 传输链路不泄露;
    2. 可配置 Cookie 的Secure属性,仅 HTTPS 环境携带 Cookie,防止会话窃取;

补充:HTTPS 仅域名会暴露在 DNS 解析(运营商知道你访问哪个域名),路径、参数全程加密

补充高频考点:HTTPS 的 GET 参数会不会泄密?

  1. 网络链路:不会泄密(加密传输)
  2. 本地浏览器、服务器日志:会明文留存 URL 参数,敏感账号密码不要放在 GET 拼接,改用 POST。

一句话总结

HTTP 裸奔传输,可读可改;HTTPS 加密 + 证书,防窃听防篡改。

为什么敏感数据不能用 GET?

GET 数据会暴露在:

  • 浏览器地址栏
  • 浏览器历史记录
  • 服务器日志(Apache/Nginx/Java/Python 后台日志)
  • 运营商日志
  • 代理服务器日志

全是明文!永远删不掉!

所以:账号、密码、身份证、验证码、Token 绝对不能放 GET!


正确做法:用 POST(数据放在请求体,不在 URL)

我给你Qt 实战代码 + 对比,一看就懂!


1. ❌ 错误写法(GET 传密码 → 泄密)

cpp

运行

// 危险!密码直接拼在 URL 里! QString url = "http://xxx.com/login?username=zhangsan&password=123456"; http->get(url);

后果:

日志里永久留下:

plaintext

/login?username=zhangsan&password=123456

谁都能看到!


2. ✅ 安全写法(POST JSON → 数据不在 URL)

cpp

运行

QString url = "https://xxx.com/login"; // 无参数 QJsonObject obj; obj.insert("username", "zhangsan"); obj.insert("password", "123456"); // 敏感数据放请求体里 http->postJson(url, obj); // POST 提交

优点:

  • URL 干净:/login
  • 数据不会出现在地址栏
  • 数据不会出现在浏览器历史
  • 服务器日志不会记录密码
  • HTTPS 加密后更安全

3. ✅ 安全写法(POST 表单)

cpp

运行

QString url = "https://xxx.com/login"; QByteArray data = "username=zhangsan&password=123456"; http->postForm(url, data);

同样安全!


4. 最关键区别(一张图看懂)

❌ GET(不安全)

plaintext

URL: /login?user=xxx&pwd=xxx

日志、历史、地址栏 →全看见

✅ POST(安全)

plaintext

URL: /login 数据:{ "user":"xxx", "pwd":"xxx" }

URL 干净 →日志不记录隐私数据


5. 总结(必须记住)

敏感数据永远用 POST:

  • 登录
  • 注册
  • 密码修改
  • 身份证
  • 手机号
  • 验证码
  • Token

GET 只能传什么?

  • 搜索关键词
  • 分页页码
  • 分类 ID
  • 不敏感的筛选参数

6. 给你一句最安全的开发原则

敏感数据绝不放 URL,一律放 POST 请求体!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询