HTTPS环境下Vue2应用Axios调用HTTP接口被自动转HTTPS问题排查
HTTP请求被自动转换为HTTPS的原因及解决方案
常见触发原因
- HSTS(HTTP严格传输安全)规则生效:如果该API域名曾经返回过HSTS响应头,或者域名被加入了浏览器内置的HSTS列表,浏览器会强制将该域名下所有HTTP请求自动升级为HTTPS,不会发起任何HTTP请求。
- CSP(内容安全策略)配置了请求升级指令:部署Vue应用的IIS站点如果返回了
Content-Security-Policy: upgrade-insecure-requests响应头,页面内所有HTTP请求都会被浏览器自动升级为HTTPS,优先级高于代码里写的固定协议。 - Axios全局请求拦截器修改了协议:检查项目中是否有全局注册的Axios请求拦截器,存在逻辑在请求发送前统一替换了
baseURL的协议前缀。 - Chrome默认HTTPS优先策略:新版本Chrome默认开启HTTPS优先模式,会主动将所有未指定HTTPS的请求尝试升级为HTTPS访问。
- IIS URL重定向规则影响:如果API站点配置了HTTP到HTTPS的301/302重定向规则,首次请求HTTP后会被跳转到HTTPS,浏览器也会缓存重定向规则后续直接发HTTPS请求。
临时调试阶段的关闭方案
- 清除HSTS缓存:打开Chrome访问
chrome://net-internals/#hsts,在「Delete domain security policies」模块输入API域名studentportal4api.jcdev.org,点击删除即可临时清除该域名的HSTS规则。 - 移除CSP升级指令:检查Vue站点的IIS响应头,临时删除
upgrade-insecure-requests相关的CSP配置。 - 调试验证拦截器逻辑:在Axios请求拦截器中打印
config.url,确认请求发送前地址是否被篡改,如有相关逻辑临时注释即可。 - 关闭Chrome HTTPS优先:打开Chrome设置,搜索「HTTPS优先模式」,临时关闭该功能,或者将测试域名加入例外列表。
- 关闭IIS重定向规则:临时删除API站点配置的HTTP转HTTPS重定向规则,确保HTTP请求可以正常响应。
你配置的Axios实例代码无逻辑问题,排除上述配置类影响即可正常发起HTTP请求:
const apiClient = axios.create({ baseURL: 'http://studentportal4api.jcdev.org',// 这里明确指定了http协议 // Timeout: 10000, headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, })
接口调用代码无逻辑问题:
return apiClient .get('/DoCdssLoginTests', { params: { sAdName: adName, }, }) .then((response) => { if (response.data.errorType == 'Error') { dispatch('handleErrorMsg', response) } else { // 业务逻辑省略 } })

内容的提问来源于stack exchange,提问作者Eric Brown - Cal
相关产品推荐
相关产品推荐

