使用CDN加速后,JSSDK不能正确授权的问题

teaxia
2020-01-02 / 0 评论 / 208 阅读 / 正在检测是否收录...

在使用了CDN加速后,原来的域名需要使用CNAME解析到CDN提供的加速域名上面去,但是这里会出现一个问题。
由于CNAME解析过后,微信无法验证IP,导致微信JSSDK授权失效。
我们也没有办法一个一个去把CDN的服务器IP获取到,然后添加到IP白名单里。
所以,谁有更好的方法解决这个问题呢?(先记录一下吧,如果我找到了办法再更新。如果看到这篇文章的朋友有办法,欢迎留言)
换了一种思路,既然不能直接使用CDN的域名加速,那么我们是否可以把VUE打包过后的除去index.html之外的所有文件都放到OSS上,然后使用OSS的CDN加速来达到我们的目的呢?答案是可以的!

首先我们要分几步来做这件事

  1. 更改VUE打包后的JS等文件的引用路径
    我们都知道,如果用脚手架部署了VUE,打包过后文件的目录大约是这样

index.html
./static
./static/css
./static/js
如果不更改打包引用路径的话,我们没有办法对这些资源做到加速处理的效果。
假设我们想让index.html引用OSS服务器上的资源,那么我们需要绑定一个OSS资源的域名地址做为加速域名地址比如
https://static.xxxxx.com (注意,如果你的服务器没有使用https安全证书,这里请改为http)
我们在config里面找到index.js文件
1.jpg
增加我们要用的加速域名地址

const assetsPath = 'https://static.xxxxxx.com/'

然后找到下面的build模块,修改assetsPublicPath为我们的设置的常量

assetsPublicPath: assetsPath,  // 生产环境

2.jpg
需要特别注意的是,如果我们要使用测试服务器进行测试,这里不建议把文件上传至OSS进行加速,所以我们需要手动切换一下assetsPublicPath,修改为原来的

assetsPublicPath: './'
  1. 让JS等文件部署到自己的服务器上,阿里云OSS自动更新加速
    做完以上操作以后,我们就可以配置阿里云OSS了。

启用OSS后,创建 Bucket
创建Bucket我们选择镜像回源(选择镜像回源,这样我们每次部署就还是跟以前一样,部署到我们原来的服务器就可以。这样当OSS服务器在服务器找不到文件内容的话,它会自动请求我们服务器上的地址,然后把文件自动同步到OSS上面)
3.jpg

回源地址填写你服务器的真实地址(没有加速过的原始地址)比如
xxx.xxxx.com
下面的3xx请求响应策略勾选跟随源站重定向请求即可
然后我们可以在域名管理里面绑定刚刚我们配置的static.xxxxx.com静态资源域名(这里有个坑点,如果你的域名也是在阿里云申请的,它会有一个自动添加CNAME记录,这里不要用它自动添加CNAME记录,我们后面自己手动配置)

4.jpg

如果你使用了https的话,这里也需要上传一下https证书,然后配置启用阿里云CDN加速
我们打开阿里云CDN的控制台,同样在CDN域名管理里面添加域名

5.jpg
加速域名同样填写我们刚刚配置的那个静态资源域名
资源分组默认就好了(如果你有自己的分组,也可以自己分)
业务类型,因为我们加速的文件都是小于20M的文件,所以这里选择图片小文件即可
源站信息,一定要选择OSS域名,然后在下面的域名那里,下拉会看到刚刚我们创建的Bucket域名,直接选择它就可以了
端口这里,如果配置了https一定要选择443端口,如果没有配置,一定要选择80端口
选择下一步后,等待审核。审核完毕以后,我们回到刚刚域名管理那个界面,我们可以看到我们的加速域名和CNAME域名。这里我们手动去域名控制台,把刚刚static.xxxxxx.com域名用CNAME解析过去,就可以生效使用了
这样,我们的整个配置完毕。每次部署也只需要把文件直接部署到我们的源服务器就好
最后,我们访问我们的主域名比如app.xxxxx.com然后打开控制台,就可以看到我们的js等文件都是从static这个加速域名请求的东西了
6.jpg

0

评论 (0)

取消