You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mixed content blocked问题求助:Vercel部署应用访问GCP托管Node.js API的HTTPS/SSL配置异常

解决Mixed Content Blocked及API SSL错误问题

看起来你已经精准定位了核心问题——部署在Vercel的前端是HTTPS环境,调用HTTP协议的API触发了浏览器的混合内容拦截机制。现在要解决的就是把API切换到HTTPS,同时搞定Postman里的SSL报错,我一步步给你梳理方案:

一、先明白:Postman的SSL错误为啥会出现?

你当前的Node.js代码只是用app.listen()启动了纯HTTP服务,完全没配置SSL证书来支持HTTPS。所以当你用HTTPS前缀请求时,服务器没法提供有效的SSL证书验证,自然会触发SSL错误。

下面分两种GCP常见部署场景给出解决方案:

场景1:用GCP负载均衡做SSL终止(推荐,无需修改Node.js代码)

这种方式让GCP负载均衡器处理HTTPS的证书加密逻辑,你的API内部仍用HTTP运行,是生产环境最省心的方案:

    1. 在GCP控制台创建托管SSL证书:绑定你的API域名,GCP会自动向Let's Encrypt申请免费可信证书,等待几分钟直到证书颁发成功。
    1. 配置负载均衡器:
    • 创建HTTPS类型的负载均衡,监听443端口(HTTPS默认端口)。
    • 将后端服务指向你的API实例,设置端口映射为443 -> 8080(负载均衡接收HTTPS请求,转成HTTP转发给你的API)。
    1. 确保GCP防火墙规则允许443端口的入站流量。
  • 完成后,用负载分配的HTTPS域名访问API,Postman不会再报SSL错误,前端调用这个HTTPS地址就能彻底解决混合内容拦截问题。

场景2:直接在Node.js代码中启用HTTPS

如果不想用负载均衡,也可以让Node.js服务直接提供HTTPS:

    1. 获取可信SSL证书:可以用Let's Encrypt免费证书,或者GCP颁发的证书,把证书文件(私钥*.key/证书*.pem)上传到GCP服务器。
    1. 修改API代码,改用https.createServer()启动服务:
const https = require('https');
const fs = require('fs');
const app = require("./app");
require("dotenv").config();

// 替换成你的证书文件实际路径
const sslOptions = {
  key: fs.readFileSync('/path/to/your-private-key.key'),
  cert: fs.readFileSync('/path/to/your-certificate.pem')
};

// HTTPS默认用443端口,非root用户可以用8443(记得在防火墙开放对应端口)
const port = process.env.PORT || 443;

https.createServer(sslOptions, app).listen(port, () => {
  console.log(`HTTPS server running on port ${port}`);
});
    1. 在GCP防火墙中开放对应的HTTPS端口(443或8443)。
  • 现在用HTTPS访问你的API服务器IP/域名,Postman就能正常请求,前端也可以安全调用了。

二、额外注意事项

  • 如果测试时用自签名证书,Postman需要临时关闭「SSL certificate verification」(设置->General里),但生产环境一定要用可信证书,否则浏览器还是会拦截请求。
  • 前端代码里所有API请求的前缀都要改成HTTPS,不能再留HTTP的地址。
  • 要是你是用Cloud Run部署API,那Cloud Run默认会提供HTTPS访问,只需要确保容器端口设置为8080,直接用Cloud Run分配的HTTPS域名即可,完全不需要自己配置SSL!

内容的提问来源于stack exchange,提问作者user15608655

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:19:10