访问 //xx.com 与 https://xx.com 的区别

为什么写这个呢,原因是我司在搞域名迁移整理时,发现有些资源CDN域名在代码逻辑中是不带协议的,所以探索了一下原因,特地记录一下。

一、 带协议与不带协议的区别

  1. xxx.com

    这只是一个域名,没有指定使用哪种协议来访问该网站。

    如果你在浏览器中输入这样的地址,浏览器会默认使用 HTTP 协议来访问该网站。

    如果服务器支持 HTTPS,浏览器也可以在必要时将连接升级为安全的 HTTPS 连接。

  2. https://xxx.com

    这包含了协议部分 https,它指示了使用安全的 HTTP 协议来访问该网站。

    HTTPS 使用了 SSL/TLS 加密来保护数据传输的安全性,适用于敏感信息(例如登录信息、支付信息)的传输。

二、必要时 如何理解

必要时 指的是当浏览器检测到服务器支持 HTTPS,并且用户访问的网址可以通过 HTTPS 安全连接访问时。

具体来说,以下是一些情况下会发生这种情况:

  1. HSTS (HTTP Strict Transport Security) 设置

    如果网站在响应 HTTP 请求时发送了 HSTS 头部,浏览器将会记住该网站只能通过 HTTPS 访问。这意味着即使用户最初通过 HTTP 访问了该网站,浏览器也会自动将后续的请求升级为 HTTPS。

    示例图:

  1. 用户手动输入 HTTPS 地址

    如果用户在浏览器中直接输入了以 https:// 开头的网址,浏览器会直接使用 HTTPS 协议进行连接。

  2. 自动重定向

    有些网站会将所有的 HTTP 请求自动重定向到 HTTPS。这样,即使用户最初输入了 HTTP 地址,服务器也会在接收到请求后发送一个特殊的响应,告诉浏览器用 HTTPS 重新访问。

    示例图:

总的来说,在现代浏览器中,当服务器支持 HTTPS 时,浏览器会尽可能地使用安全的 HTTPS 连接来访问网站,以确保用户的数据安全。

三、Non-Authoritative-Reason: HSTS

Non-Authoritative-Reason: HSTS 是一个特定于微软服务器的头部(HTTP 响应头部),它通知客户端(通常是浏览器)服务器的响应并不是来自于该资源的权威来源,而是由于 HSTS(HTTP Strict Transport Security)策略而进行了强制转发。

具体来说,当一个客户端发送一个 HTTP 请求,并且该请求被重定向到一个 HTTPS 地址时,如果响应包含 Non-Authoritative-Reason: HSTS 头部,这意味着服务器告诉客户端,该响应是由于 HSTS 策略而进行的重定向,而不是来自于资源的权威来源。

这通常会在服务器在 HSTS 策略生效的情况下,收到一个 HTTP 请求时,将其强制重定向到相应的 HTTPS 地址时使用。这样做是为了确保所有的通信都是经过安全的 HTTPS 连接进行的,以保护通信的安全性和隐私性。

请注意,Non-Authoritative-Reason: HSTS 这个头部可能只在特定类型的服务器配置或者特定的网络环境下出现,而在其他情况下可能不会出现。

相关推荐
程序员黑豆6 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
To_OC7 小时前
踩了个 TS 的坑之后,我终于把 type 和 interface 掰明白了
前端·react.js·typescript
GreenTea7 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
浮生望7 小时前
前端API工程化:用 Mock 数据与 Axios 配置实现独立于后端的并行开发
前端
万少8 小时前
给 DeepSeek Harness 装个"应用商店":一条命令,595 个插件随你逛
前端·javascript·后端
波波0078 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
Brown.alexis9 小时前
es6知识点1-自备使用
前端·ecmascript·es6
小爬的老粉丝9 小时前
JavaScript 纯前端预览 WPS:先识别容器,再路由解析器
前端·javascript·wps
计算机魔术师10 小时前
新兴多智能体系统的模式与问题
前端
用户0595401744611 小时前
AI Agent 上下文污染踩坑实录:用 pytest + Redis 揪出 3 类记忆串号 bug,排查 6 小时
前端·css