微信不再支持http导致的问题

问题背景:
前段时间做了一个部署在微信公众号里的web APP,由于在微信里使用,不可避免的就遇到了配置分享图片和文字的配置问题。 于是从网上找了一个node签名服务,并且单独部署在了服务器的一个端口上。
微信官方公告显示,自2018年起,微信将不再支持http调用,所以需要将项目中的http换成https。域名指向https之后,原IP地址下的node服务端口不能访问。查了一下,发现需要把node服务也配置上SSL证书,换成https域名。

问题描述:

  1. Before
    IP指向的域名为: http://[Domain Name]
    微信签名服务地址:http://[Domain Name]:[Port Number]/[Service Name]

  2. Change

[IP Number] -> https://[Domain Name]

  1. Now
    APP URL可以正常访问,但是向微信服务post数据的时候:
    这里写图片描述

尝试着把微信签名服务的URL改成【https + IP】地址 OR 【https + 域名】的形式:

这里写图片描述

Node服务修改(代码 + 证书导入)

npm install https –save
const express =  require('express'),
      bodyParser = require('body-parser'),
      fs = require('fs'),
      wxSignature = require('./wx_signature'),
      wxAuth = require('./wx_auth'),
      app = express(),
      https = require('https'),
      privateKey  = fs.readFileSync('./keys/2_wechat.sediver.cn.key', 'utf8'),
      certificate = fs.readFileSync('./keys/1_wechat.sediver.cn_bundle.crt', 'utf8'),
      credentials = {key: privateKey, cert: certificate},
      httpsServer = https.createServer(credentials, app);  
// https端口
httpsServer.listen(446, function() {  
    console.log('HTTPS Server is running on: https://localhost:%s', 446);  
}); 

//微信2小时刷新(动态获取access_token以及jsapi_ticket)
  wxSignature.getTokenAndTicket(); //第一次初始化
  setInterval(function(){
  wxSignature.getTokenAndTicket();
  },7200000)

app.all('/wxSignature', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

//请求主体解析
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))


//获取当前用户(上传当前完整路径)
app.post('/wxSignature',function(req,res){
    let currentUrl = req.body.currentUrl;
    wxSignature.wxSignature(req,res,currentUrl) //签名
})

//获取当前用户微信的信息
app.post('/wxUserInfor',function(req,res){
    wxAuth.getWxUserInfor(req,res)
})

// http端口
// app.listen(5086,function(){
//     console.log('微信签名服务器已经启动');
// })

参考链接: http://blog.csdn.net/flower46273736/article/details/54576710

还需要查看一下服务器是否打开了防火墙,打开的话要在服务器防火墙开通需要的端口。

防火墙 -> 高级 -> 入站规则 -> 右键添加 -> 添加端口

这里写图片描述

这里写图片描述

之后一直Next就可以了(要看下allow to connection选项是不是被选中了)。

大功告成!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值