通过https协议访问后端无法在后端程序中发起https请求
发布于 2 天前 作者 feelingLJH 377 次浏览 最后一次编辑是 1 天前 来自 问答

微信小程序获取用户的openid是需要在后端程序中发起https请求去获取的,以下是我在后端程序中发起的https请求代码: var https = require(“https”); var iconv = require(“iconv-lite”); login:function(req,res,next){ var _res = res; var url = “https://api.weixin.qq.com/sns/jscode2session?appid=…&secret=…&js_code=…&grant_type=authorization_code”; https.get(url, function (res) {
var datas = [];
var size = 0;
res.on(‘data’, function (data) {
datas.push(data);
size += data.length;
});
res.on(“end”, function () {
var buff = Buffer.concat(datas, size);
var result = iconv.decode(buff, “utf8”); _res.json(result); });
}).on(“error”, function (err) {
_res.json(“fail”); });
抱歉,appid和secret和js_code不能明码,用点点点代替,代码我测试过,是没问题的

问题:分别通过http协议和https协议去访问并执行上面的函数,发现通过http协议去访问服务器并执行以上后端代码发起https请求没问题,可是通过https协议去访问服务器并执行以上后端代码发起https请求就会报502 Bad Gateway,请问这是什么原因呢?我的后端是放在腾讯云服务器中的,请问是缺少什么没有配置吗?还是?

PS:我的腾讯云服务器中是有做配置的,所以不存在无法通过https访问我的后端的问题。

10 回复

链接2少了端口号吧

@godghdai 不是这个问题,我在nginx里面做了配置,不需要端口号访问

@flamingtop 你好,试了你给我的链接中的解决方案还是不行呢

@nnliang 你好,你是说哪里的防火墙,腾讯云服务器中的?

对,腾讯云服务器的防火墙关闭了再试试

代码中的request用的是啥? 这个包吗?

@nnliang 你好,跟防火墙没关系吧,链接1和链接2都是对应同一个腾讯云服务器,如果有防火墙有关的话,那么应该两个都不行才会,现在的情况是我通过http协议去访问我的后端并然在后端程序中发起https请求这是没问题的,可是通过https协议去访问后端并然在后端程序中发起https请求就有问题了,请问你知道这是什么问题吗?

@imhered 就nodejs中的require模块啊

回到顶部