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

来源:互联网 发布:php 配置 mongodb 编辑:程序博客网 时间:2024/05/29 17:03

问题背景:
前段时间做了一个部署在微信公众号里的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 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 维尔口腔 青岛口腔 唯美口腔 宁波口腔 成都口腔 口腔综合科 正常口腔 口腔口腔医院 时代口腔 口腔牙医 矫正口腔 牙科口腔 麦芽口腔 东莞口腔 南宁口腔 株洲口腔 北京口腔 口腔矫正 哈尔滨口腔 天津市口腔 北极星口腔 口腔补牙 常州口腔 厦门口腔 无锡口腔 口腔溃疡什么药 口腔溃疡原因 口腔溃疡三分钟止疼法 口腔溃疡怎么办 经常口腔溃疡原因 口腔溃疡止疼法 口腔溃疡图片 口腔溃疡止疼 口腔溃疡吃什么水果 口腔溃疡维生素 溃疡性口腔炎 口腔溃疡发白 口腔溃疡水果 顽固性口腔溃疡 口腔溃疡缺什么 小儿口腔泡疹初期图片