Node.js 如何在nodejs/nextjs api处理程序中确定http与https

Node.js 如何在nodejs/nextjs api处理程序中确定http与https,node.js,http-headers,next.js,Node.js,Http Headers,Next.js,为了在我的xml站点地图和rss提要中正确地构建我的URL,我想确定该网页当前是否通过http或https提供服务,因此它在开发过程中也可以在本地工作 导出默认函数处理程序(req、res){ const host=req.headers.host; const proto=req.connection.encrypted?“https”:“http”; //为xml站点地图构造url } 然而,上面的代码在Vercel上仍然显示为通过http服务。我希望它以https的形式运行。有没有更好的

为了在我的xml站点地图和rss提要中正确地构建我的URL,我想确定该网页当前是否通过http或https提供服务,因此它在开发过程中也可以在本地工作

导出默认函数处理程序(req、res){
const host=req.headers.host;
const proto=req.connection.encrypted?“https”:“http”;
//为xml站点地图构造url
}

然而,上面的代码在Vercel上仍然显示为通过
http
服务。我希望它以
https
的形式运行。有没有更好的方法来计算
http
vs
https

当Next.js api路由运行在代理之后,代理正在卸载到http时,协议是
http

通过将代码更改为以下内容,我能够首先检查代理运行的协议

const proto=req.headers[“x-forwarded-proto”];
然而,这将打破开发中不使用代理的情况,或者不使用代理的其他部署解决方案的方式。为了支持这两个用例,我最终得到了以下代码

const协议=
请求头[“x-forwarded-proto”]| | req.connection.encrypted
? “https”
:“http”;
每当
x-forwarded-proto
头不存在(
未定义
)时,我们会返回到req.connection.encrypted,以确定是否应该在
http
vs
https
上提供服务

现在它可以在本地主机和Vercel部署上工作