本地开发用 HTTPS 会影响 React 的 API 请求吗?
我最近在本地用 create-react-app 搭了个项目,为了测试某些需要 HTTPS 的功能(比如摄像头权限),就启用了 HTTPS 启动。但发现发请求到后端接口时老是失败,提示混合内容(mixed content)错误。明明后端是 HTTP 的,难道本地 HTTPS 下不能请求 HTTP 接口?
我试过把代理配在 package.json 里,也试过直接写完整 URL,都不行。是不是必须让后端也上 HTTPS 才能调试?下面是我调用接口的代码:
useEffect(() => {
fetch('http://localhost:3001/api/data')
.then(res => res.json())
.then(data => setData(data))
.catch(err => console.error('请求失败:', err));
}, []);
在 create-react-app 项目根目录创建个 setupProxy.js 文件,写入以下内容
然后把 fetch 请求改成相对路径:
重启开发服务器就行。记得安装 http-proxy-middleware 包。这个方法能让你继续用本地 HTTPS 同时访问 HTTP 接口,省得改后端配置。
顺便说下,开发环境这么搞没问题,生产环境还是要统一用 HTTPS 的,安全第一。