怎样让小程序服务器免备案

服务器
我们知道,小程序服务器的域名必须备案。然而,扫码签到工具的服务器在国外,没有备案,也没法备案。小程序服务器不备案,我们是怎么做到的呢?答案就是代理。

 我们知道,小程序服务器的域名必须备案。然而,扫码签到工具的服务器在国外,没有备案,也没法备案。

小程序服务器不备案,我们是怎么做到的呢?答案就是代理。

下面对背景和解决方案逐一详细说明。

背景:

我们有境外的虚拟服务器,有域名,但域名没有备案(鉴于服务器在国外,没法通过备案)。

服务端使用的是Laravel框架。

网上提到了新浪的云应用解决方案。我们申请了php的服务器和一个二级域名,10元/月。这个二级域所在的一级域名已经备案,可以通过小程序的服务器域名校验。

当决定把服务器搬到新浪的服务器时,才发现新浪的php服务器不支持Laravel框架。

[[228550]]

解决方案:

怎么办呢?

既然小程序和后端服务器之间的交互比较简单,都是通过Request交互(除了JSON格式的request,就是downloadImage),为什么不试试把新浪服务器作为一个代理,让它作为前端小程序和后端服务器之间的桥梁呢?

思路如下图所示:

怎样实现代理呢?

把所有的Request按照类型分类,让新浪服务器处理各种类型的Requeset。在当前案例中,我们使用了get、post、put、getDownImg这些类型(说明:getDownImg虽然是get请求,不过它返回的类型是二进制数据,不是JSON格式,所以和get分开处理),因此,在新浪服务器上创建get.php、post.php、put.php、getDownImg.php分别处理各自对应类型的request。

每个代理的内部实现是怎样的呢?

先看看小程序服务器处理的request。以get为例,request的格式如下:

https://webserver/path?param1=value1&param2=value2

其中webserver表示服务器的地址,path表示API的名称,param1和param2分别是两个参数,value1和value2对应各自的参数值。

也就是说在第2步中,新浪服务器转发request到小程序服务器的格式应该如上所示。

为了保证通用性,新浪服务器接收到的request(第1步中的request),我们把path放到参数里,如下:

https://sinawebserver/get.php?method=path&param1=value1&param2=value2

然后从参数里提取出method的值,作为path转发(第2步中的request)到小程序服务器,这就是get.php做的事情。

当然,需要注意的是,既然我们在代理中使用了method这个参数,所以在小程序的服务器提供的API中,我们应该避免method参数,否则在get.php在处理请求的时候会引起冲突。

同样,回到小程序,发送请求的方式就稍微有点不一样了。

在使用代理之前,request的样例可能如下:

  1. wx.request({ 
  2.   url: 'https://webserver/path'
  3.   data: { 
  4.      x: '' , 
  5.      y: '' 
  6.   }, 
  7.   header: { 
  8.    'content-type''application/json' 
  9.   }, 
  10.   success: function(res) { 
  11.   } 
  12. }) 

使用代理之后,它就变成了如下:

  1. wx.request({ 
  2.   url: 'https://sinawebserver/'
  3.   data: { 
  4.     method: 'path' 
  5.      x: '' , 
  6.      y: '' 
  7.   }, 
  8.   header: { 
  9.     'content-type''application/json' 
  10.   }, 
  11.   success: function(res) { 
  12.   } 
  13. }) 

至于response,第3步中的response,通过新浪代理服务器,原封不动地返回给小程序就可以了,无需任何变动。

按照这种方法,我们写出其他几种类型的request代理,如post.php、put.php、getDownImg.php。

大功告成,我们的境外服务器可以为小程序提供服务了。

最后,还得说明,在这个方案中,我们增加了一个代理层,以致让系统的request反应链变长了,增加了系统的响应时间,也增加了潜在的不稳定性。

个人看法:如果有条件,不怕麻烦,还是建议申请国内的服务器,备案域名。

最后,附上新浪服务器作为代理服务器的php源代码,供大家参考。

https://github.com/franczx/sina_proxy_4_wechat

 

责任编辑:武晓燕 来源: 码农的人生
相关推荐

2011-02-22 09:06:57

2009-11-27 14:37:20

Cisco路由器日志

2009-12-29 11:03:28

VPN服务器故障

2009-09-17 15:48:58

WSUS服务器

2017-11-10 08:58:49

Web服务器应用程序

2010-08-20 09:41:59

kernel pani自动重启

2015-05-28 15:32:14

Linuxssh

2016-08-09 19:36:48

2011-02-23 17:47:15

限制vsFTP链接

2018-01-31 11:20:48

2009-01-15 09:54:00

DHCP服务器

2011-01-26 11:11:09

惠普MicroServer服务器

2013-03-05 13:39:04

ARM架构服务器工作负载

2009-09-24 12:57:18

2018-02-06 10:53:53

2017-06-06 09:53:23

2010-05-18 16:32:53

IIS服务器

2018-07-03 10:33:51

服务器运维Linux

2010-05-18 17:13:11

IIS服务器

2010-05-20 18:27:10

IIS服务器
点赞
收藏

51CTO技术栈公众号