1.应用场景

主要用于了解HSTS, 以及如何合理设置, 如正式服和测试服, 开发环境;

摘要:当HTTPS网站返回307状态码临时重定向到HTTP时,会带来安全风险(如中间人攻击和混合内容问题)。

HSTS机制通过强制HTTPS通信可解决此问题,但若与307重定向冲突会导致连接中断。

建议检查服务器配置,避免HTTPS到HTTP的重定向,并合理设置HSTS参数(如max-age和preload)。

调试时可使用Chrome DevTools和SSL测试工具,Nginx示例配置展示了如何强制HTTPS和启用HSTS。

2.学习/操作

1.文档阅读

HTTPS -> HTTP 引起的 307 状态码与 HSTS – Charles Feng
What is the HTTP 307 Temporary Redirect Status Code - Kinsta®

chrome://net-internals/#hsts

2.整理输出

当用户通过 HTTPS 访问网站时,服务器可能会返回 307 状态码,临时重定向到 HTTP 协议。

307 状态码表示请求的资源暂时移动到另一个 URL,且客户端应继续使用原始请求方法(如 POST)访问新地址。

这种重定向通常由服务器配置错误或后端逻辑引起,例如强制降级到 HTTP 或未正确处理 HTTPS 请求。

此行为存在安全隐患:

  • 中间人攻击风险:降级到 HTTP 后,传输数据可能被窃听或篡改。
  • 混合内容问题:若页面通过 HTTPS 加载但部分资源(如脚本、图片)通过 HTTP 传输,浏览器可能拦截这些资源,导致功能异常。

HSTS 机制的作用

HSTS(HTTP Strict Transport Security 「HTTP严格传输安全」) 是一种安全策略机制,通过响应头 Strict-Transport-Security 强制浏览器仅通过 HTTPS 与网站通信。关键特性包括:

  • 自动转换 HTTP 链接为 HTTPS:浏览器在访问网站时,即使输入 http:// 也会自动跳转到 https://
  • 阻止无效证书警告绕过:用户无法手动忽略证书错误继续访问。
  • 预加载列表:网站可申请加入浏览器内置的 HSTS 预加载列表,首次访问即启用 HTTPS。

HSTS 响应头示例:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

307 状态码与 HSTS 的冲突

若网站启用了 HSTS 但服务器返回 307 重定向到 HTTP,浏览器会根据 HSTS 策略拒绝重定向并终止连接。此时可能出现以下情况:

  • 控制台报错:浏览器显示 HTTP Strict Transport Security 拦截警告。
  • 用户无法访问:页面加载失败,尤其当 HSTS 包含 includeSubDomainspreload 时。

解决方案

避免 HTTPS 到 HTTP 的重定向

  • 检查服务器配置(如 Nginx、Apache),确保所有重定向目标使用 HTTPS。
  • 更新后端代码逻辑,避免手动构造 HTTP 链接。

合理配置 HSTS

  • 设置较长的 max-age(如 1 年)并逐步增加。
  • 测试无误后添加 includeSubDomainspreload 指令。
  • 通过 HSTS 预加载提交入口 申请加入浏览器预加载列表。

调试工具推荐

  • 使用 Chrome DevTools 的 Network 面板检查重定向链。
  • 通过 SSL Labs 测试 HSTS 配置。

代码示例:Nginx 强制 HTTPS 配置

server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}server {listen 443 ssl;server_name example.com;# HSTS 配置add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}

测试服/开发服 - 解决 HTTPS 降级到 HTTP 引起的 307 状态码与 HSTS 问题

以下为开发环境中的解决方案:


禁用浏览器的 HSTS 强制策略

在 Chrome 地址栏输入 chrome://net-internals/#hsts,进入 HSTS 管理页面。
Delete domain security policies 中输入目标域名(如 localhost 或开发域名),点击删除。
重启浏览器后,HSTS 策略将被临时移除。


清理浏览器缓存与 Cookie

强制刷新页面(Ctrl + Shift + RCmd + Shift + R)。
清除浏览器缓存和 Cookie,避免旧策略残留影响测试。


开发环境配置全 HTTPS

使用自签名证书或工具(如 mkcert)为本地开发环境启用 HTTPS:

# 安装 mkcert(示例为 macOS)
brew install mkcert
mkcert -install
mkcert localhost 127.0.0.1 ::1

配置开发服务器(如 Node.js 的 https 模块或 Webpack 的 devServer.https)加载生成的证书。


修改后端重定向逻辑

确保后端代码不主动从 HTTPS 重定向到 HTTP。例如在 Express 中:

app.use((req, res, next) => {if (req.protocol === 'http') {res.redirect(301, `https://${req.headers.host}${req.url}`);} else {next();}
});

临时禁用 HSTS 响应头

检查后端是否返回 Strict-Transport-Security 头,开发环境可注释或移除该配置。
例如 Nginx 中:

# 注释以下行
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

使用无痕模式或不同浏览器测试

无痕模式(Incognito)默认不加载部分扩展和缓存,可避免 HSTS 干扰。
尝试使用未访问过生产环境的浏览器(如 Firefox 或 Safari)进行测试。


检查代理或中间件配置

确保开发工具(如 Webpack DevServer)未错误修改请求协议。
配置代理时显式指定目标协议:

devServer: {proxy: {'/api': {target: 'https://localhost:3000',secure: false // 仅开发环境允许自签名证书}}
}

验证网络层配置

检查本地 hosts 文件是否绑定正确域名,避免 DNS 解析问题。
确保测试域名未出现在浏览器预加载的 HSTS 列表中(如 preload 列表)。

后续补充

...

3.问题/补充

TBD

后续补充

...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95324.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95324.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95324.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍

一、靶场描述这个靶场在搜索查询的跟踪功能中,包含一个基于DOM的跨站脚本(DOM-based XSS)漏洞。该漏洞的产生是因为网站使用了一个名为 document.write 的 JavaScript 函数,这个函数会把数据直接写入到页面中。而写入的数据来源于…

深度学习篇---Pytorch常用优化器

优化器介绍:在 PyTorch 中,优化器(Optimizer)的作用是根据模型参数的梯度来更新参数,以最小化损失函数。下面用通俗易懂的方式介绍几种常用的优化器:1. SGD(随机梯度下降)最基础的优…

0903 C++类的运算符重载、静态成员与继承

Part 1.梳理思维导图一.运算符重载1.运算符重载的作用使原本只能对基本数据类型生效的运算符&#xff0c;在重载后&#xff0c;满足可以对构造类型数据生效。2.关系运算符重载a.关系运算符种类> > < < !b.分析参数表达式…

Cloudflare安全规则实用指南:从路径拦截到IP限制的10个经典范例

前言&#xff1a;在Cloudflare的安全防护体系中&#xff0c;自定义规则是抵御特定威胁的“精准武器”。除了基础的路径拦截&#xff0c;日常运维中还有许多高频场景需要针对性配置。本文将通过10个实用范例&#xff0c;带你掌握Cloudflare规则的灵活用法&#xff0c;覆盖路径防…

数据结构(时空复杂度)

目录 一、算法复杂度 二、时间复杂度 1.不同时间度代码举例 三、空间复杂度 一、算法复杂度 算法复杂度&#xff08;评估算法优劣一个重要指标&#xff09;分为时间复杂度和空间复杂度。 时间复杂度是指执行算法所需要的计算工作量&#xff0c;而空间复杂度是指执行这个…

ESXI8多网卡链路聚合

1. 背景 测试服务器只有千兆网卡&#xff0c;增加上行带宽&#xff0c;使用两块网卡做链路聚合。 2. 环境 VM ESXI 8.0 华为交换机 S5735S 3. 交换机配置 负载均衡方式采用了src-dst-ipTrunk模式采用了手工负载分担&#xff08;测试了静态LACP&#xff0c;未成功&#xff09;4.…

从“人工驱动”到“AI协同”:良策金宝AI如何助力设计院数智化跃迁?

在“双碳”目标驱动下&#xff0c;电力工程项目的数量与复杂度持续攀升。设计院面临“项目多、周期短、人力紧”的三重压力&#xff0c;传统的“人工驱动”模式已难以为继。良策金宝AI&#xff0c;正是这场变革的核心引擎。它以AI驱动数智化服务&#xff0c;为工程设计企业提供…

vue3 vite 自适应方案

两种方案&#xff1a; 1 使用 postcss-pxtorem插件 npm install postcss-pxtorem autoprefixer --save-dev # 或 yarn add postcss-pxtorem autoprefixer -D 2、postcss-px-to-viewport npm install postcss-px-to-viewport --save-dev 或 yarn add postcss-px-to-viewport -D …

华为研发投资与管理实践(IPD)读书笔记

在全球科技产业竞争日趋激烈的背景下&#xff0c;企业研发管理早已告别 “依赖个体经验、靠运气突破” 的粗放时代&#xff0c;如何将研发创新从 “偶然成功” 转化为 “可复制、可持续的必然成果”&#xff0c;成为所有追求长期竞争力的企业必须破解的命题。华为&#xff0c;作…

【LeetCode_283】移动零

刷爆LeetCode系列LeetCode第283题&#xff1a;github地址前言题目描述题目与思路分析代码实现算法代码优化LeetCode第283题&#xff1a; github地址 有梦想的电信狗 前言 本文用C实现 LeetCode 第283题 题目描述 题目链接&#xff1a;https://leetcode.cn/problems/move-z…

一文弄懂C/C++不定参数底层原理

目录 一、C语言的可变参数&#xff1a;基于栈帧的手动读取 &#xff08;1&#xff09;C函数调用的栈帧结构 &#xff08;2&#xff09;C 可变参数的 4 个核心宏&#xff1a;如何 “手动读栈” &#xff08;3&#xff09;实战代码&#xff1a;用 C 可变参数实现求和函数 &a…

【Android】【设计模式】抽象工厂模式改造弹窗组件必知必会

写一个 Android 版本的抽象工厂弹窗 Manager 管理器&#xff0c;使用 DialogFragment 实现&#xff0c;这样能更贴近真实的开发场景。结构设计 抽象产品&#xff1a;BaseDialogFragment&#xff08;继承 DialogFragment&#xff09;具体产品&#xff1a;LoginDialogFragment, …

Win64OpenSSL-3_5_2.exe【安装步骤】

官网下载 注意&#xff1a;科学上网&#xff0c;可以加速下载速度&#xff01; Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 下载后得到&#xff1a;Win64OpenSSL-3_5_2.exe 双击安装 修改安装路径&#xff1a; 默认就选择第一个。 重要提醒​…

华为云云原生架构赋能:大腾智能加速业务创新步伐

巨大的涡轮、细小的螺丝&#xff0c;一台航天飞机发动机的三维模型呈现在屏幕上&#xff0c;远程同事同步协作&#xff0c;一台复杂设备在工程师高效的协同中不断完善。深圳市大腾信息技术有限公司&#xff0c;正是这场工业变革的推动者之一。大腾智能以“云原生工业”的融合为…

基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)

系列文章目录 基于http公网ip的Frp内网穿透教程(win server) 基于http域名的Frp内网穿透教程(win serverIIS反向代理) 基于http公网ip的Frp内网穿透教程(Linux) 基于https域名的Frp内网穿透教程(LinuxNginx反向代理) 目录 系列文章目录 前言 一、Frp是什么&#xff1f; 1. …

裸机程序(1)

一、裸机裸机是一个在计算机硬件与软件开发领域高频出现的概念&#xff0c;核心定义是 “未安装操作系统&#xff08;OS&#xff09;&#xff0c;仅包含硬件本身&#xff08;或仅运行最底层硬件驱动 / 控制程序&#xff09;的设备”。在电脑中&#xff0c;裸机会映射代码到cpu&…

95%企业AI失败?揭秘LangGraph+OceanBase融合数据层如何破局!​

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。不知道你们有没有遇到过&#xff0c;在我们一些实际落地的AI项目中&#xff0c;虽然前期“Demo 很惊艳&#xff0c;但上线后却无人问津”。你们有没有想…

树莓集团产教融合:数字学院践行职业教育“实体化运营”要求

在职业教育改革不断深化的背景下&#xff0c;“实体化运营” 成为推动职业教育高质量发展的重要方向。树莓集团积极响应这一要求&#xff0c;以产教融合为核心&#xff0c;打造数字学院&#xff0c;切实践行职业教育 “实体化运营”&#xff0c;为培养高素质数字领域专业人才探…

ELK 统一日志分析系统部署与实践指南(上)

#作者&#xff1a;张桐瑞 文章目录1 ELK 技术栈概述1.1ELK 核心组件详解1.2 ELK 工作流程2 ELK部署2.1 环境描述2.1.7 配置es集群下篇&#xff1a;《ELK 统一日志分析系统部署与实践指南&#xff08;下&#xff09;》 链接: [https://blog.csdn.net/qq_40477248/article/detail…

上位机知识篇---poweshellcmd

要理解 PowerShell 和 CMD 的区别&#xff0c;我们可以先打个通俗的比方&#xff1a;CMD 像老式功能机&#xff0c;只能干打电话、发短信这些 “基础活”&#xff1b;而 PowerShell 像智能手机&#xff0c;不仅能做基础操作&#xff0c;还能装 APP、玩复杂功能&#xff0c;甚至…