gpt4 book ai didi

javascript - Node : Send HTTPS request but get HTTP

转载 作者:行者123 更新时间:2023-11-29 21:08:38 26 4
gpt4 key购买 nike

我正在使用 NodeJS 构建网站,并将其部署到 Heroku。但是当我打开网站时,出了点问题。这是问题所在:

代码:在我的网站的主要源文件中:

app.get('/', (req, res) => {
var data = {
rootURL: `${req.protocol}://${req.get('Host')}`,
};

res.render('home.html', data);
});

然后,在 home.html 中,我包含以下脚本:

<script type="text/javascript">
$.getJSON('{{rootURL}}'+'/about', {}, function(data){
// Code here is deleted for now.
}).fail(function(evt) {
// Code here is deleted for now.
});
</script>

这里我使用 hbs 模板,所以 {{rootURL}} 等于随“home.html”页面呈现的“data”对象中的“rootURL”属性。'/about' 是我为我的网络设计的 API 之一。它基本上发回有关网站本身的一些信息,并且此信息包装在 JSON 中。

那么,问题来了。该代码在本地运行良好,并且在我向 Heroku 发送 HTTP 请求而不是 HTTPS 时运行良好。但是,如果我向 Heroku 发送 HTTPS 请求,我将收到“混合内容”错误: Errors I get in Chrome Console.

然后我切换到开发人员工具中的“元素”选项卡,我看到了这个: The schema is HTTP, not HTTPS!

我在这里很困惑。我只是在“req”对象中获取“protocol”属性,然后用它填充模板。所以,我假设如果我在我的 Chrome 浏览器中输入带有“https”模式的 '[my-website-name].herokuapp.com',我部署在 Heroku 上的 nodeJS 应用程序应该得到“https”对于 req.protocol。但显然并非如此。这里有什么问题?

最佳答案

我假设您实际上没有 SSL 证书? Heroku 将提供 HTTPS,但当它到达您的 express 端点时,它会在内部将其转换为普通 HTTP,这就是为什么它将 req.protocol 视为 HTTP。

甚至向 getJSON 提供 URL 有什么意义吗?为什么不直接发送 $.getJSON('/about', callback) 让浏览器处理呢?

此外,您没有在上传的第一张图片中隐藏您的 URL,如果这是您的意图的话。

关于javascript - Node : Send HTTPS request but get HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42750347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com