Excel加载项使用axios调用HTTP接口被HTTPS拦截如何解决
问题原因
触发的是浏览器内置的混合内容安全拦截规则:通过Office Add-in CLI创建的项目默认会配置本地HTTPS证书,任务窗格页面通过HTTPS协议加载,此时页面发起非HTTPS的HTTP请求会被直接拦截,对应报错如下:
Mixed Content: The page at 'https://localhost:3000/taskpane.html?_host_Info=####' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://#######'. This request has been blocked; the content must be served over HTTPS.
可行方案
首先明确:生产环境发布的Office加载项强制要求全链路HTTPS,永久禁用HTTPS会导致加载项无法正常加载、也无法通过商店审核,仅本地开发调试阶段可临时调整配置。
方案1:本地调试临时禁用HTTPS
按以下步骤修改项目配置即可关闭默认HTTPS:
- 打开项目根目录下的
webpack.config.js文件,找到devServer配置段:- 将配置项
https: true修改为https: false - 删除
server配置块下关联本地HTTPS证书的cert、key字段
- 将配置项
- 打开根目录下的
package.json文件,找到start启动脚本,删除脚本中携带的--https参数 - 重启本地开发服务,清除Webview/浏览器缓存后,任务窗格会通过HTTP协议加载,此时可正常发起HTTP接口请求
- 注意:该配置仅用于本地临时调试,代码提交、发布前必须回滚上述修改。
方案2:保留HTTPS配置解决调用问题(推荐)
不需要修改加载项的HTTPS配置,通过代理转发绕过混合内容拦截,适配开发、生产全场景:
- 本地调试阶段:直接用webpack-dev-server自带的代理能力,在
devServer配置中添加转发规则,将匹配路径的请求自动转发到目标HTTP接口,示例配置如下:
devServer: { // 原有其他配置保持不变 proxy: { '/api': { target: 'http://你要调用的目标HTTP服务地址', changeOrigin: true, secure: false } } }
配置完成后,前端代码中直接请求本地同域的/api/xxx路径即可,devServer会自动将请求转发到目标HTTP接口,全程页面保持HTTPS协议,不会触发安全拦截。
- 生产上线阶段:必须将调用的目标接口升级为HTTPS协议,这是Office加载项上线的强制要求,无其他绕过方式。
内容的提问来源于stack exchange,提问作者jalwan
相关产品推荐
相关产品推荐

