Nuxt3中useFetch调用HTTP接口自动转HTTPS的问题求助
解决Nuxt3 useFetch自动转为HTTPS请求的问题
以下是几个直接可行的解决思路,无需复杂的Nginx代理:
确保请求URL完整指定HTTP协议
调用useFetch时必须传入完整的http://开头的URL,不要使用相对路径或省略协议的写法。例如:const { data } = await useFetch('http://target-server.com/api/endpoint')部分场景下,Nuxt会根据当前应用的协议自动补全URL,明确指定
http://可以避免这种自动转换。调整Nuxt Nitro配置
在nuxt.config.ts中添加Nitro相关配置,禁用HTTPS强制转换:export default defineNuxtConfig({ nitro: { https: false, devProxy: { // 开发环境可通过该配置直接代理HTTP请求,无需额外工具 '/api': { target: 'http://target-server.com/api', changeOrigin: true, prependPath: false } } } })Nitro是Nuxt3的服务端引擎,这个配置可以避免服务端发起请求时强制切换到HTTPS。
检查环境变量与公共配置
确认项目中没有设置NUXT_PUBLIC_BASE_URL或类似环境变量为HTTPS地址,这类变量会被Nuxt用作请求的基础URL,导致所有请求自动拼接成HTTPS。如果有,修改为对应的HTTP地址即可。处理浏览器混合内容限制(客户端请求场景)
如果你的Nuxt应用是通过HTTPS运行的(比如生产部署或本地启用了HTTPS),浏览器会因混合内容安全策略阻止HTTP请求:- 开发环境:可临时在浏览器设置中允许不安全内容(Chrome地址栏点击锁图标→网站设置→不安全内容→允许)
- 生产环境:若无法修改目标服务器的HTTPS配置,可将Nuxt应用改为HTTP运行,或使用Nitro的生产环境代理配置(
nitro.proxy)
内容的提问来源于stack exchange,提问作者Sebastian van der Westhuizen
相关产品推荐
相关产品推荐

