标签 JavaScript 下的文章

是的你没看错,是从https切换回http。这个开倒车的奇怪需求是由于

腾讯云直播API生成 HLS拉流地址默认是 http (尽管文档声称支持 https 但依然会触发证书与域名的不匹配,显示更难看的红色警告标签,而且同样会导致资源加载失败)
QQ截图20200520092043.jpg

控制台报警:

已拦截跨源请求:同源策略禁止读取位于 https://XXXXXX.com/live/XXXXXX.m3u8 的远程资源。(原因:CORS 请求未能成功)。
无法加载视频文件,请检查网络,以及视频文件是否允许跨域请求访问,m3u8文件是否存在

而在https协议下调用http资源这种做法,主流浏览器是被拦截禁止的,可参考
Firefox浏览器的安全说明 与截图:

QQ截图20200520085519.jpg

  • 但是!目前在移动端(微信)下暂时还可以偷鸡这样搞,直播视频依然可以正常加载。

因此我需要:

判断当前用户是PC端浏览器访问且访问的是HTTPS时跳转到HTTP,回避所有的问题!

以下是简单实现方法:




- 阅读剩余部分 -

工作到头脑发昏想着暂停一下让自己喘口气,记起来好像在群里有某个网友求扫雷的源码。
去github和百度逛了一圈都没有觉得比较好的。然后就撸起袖子—— 完蛋,一个小时不见了。

https://gen8.orz.com.cn/mine/

试玩自己写的游戏自己通不了关不死心,反复重试又不见了30分钟。
最后还加上了作弊码...

QQ截图20200103003419.png

我都做了些什么鬼!

少量中文通过GET方式传参,到了PHP端解码出现乱码或内容丢失。
原因及解决办法

url参数会对 编码字串内的 + 号解释为空格,所以在 decode 之前做一下逆操作就可以解决。

$str_b64 = $_GET["msg"]; //base64编码的字符串
$str_b64 = str_replace(" ","+",$str_b64);
$str_raw = base64_decode($str_b64); //解码

不是恰饭哈,只是最近刚巧一个项目要页面上做比较多的图表,用专业点的术语叫数据透视页。
所以找了下看什么现成的控件适合使用。

要求比较低
部署简易、兼容微信、支持柱状、折线、雷达图、能找到开发团队交流反馈bug就好。

后来找到了 uCharts
官网:https://www.ucharts.cn/
git: https://gitee.com/uCharts/uCharts
文档: http://doc.ucharts.cn/

项目需要保密,但我用它美化了一下自己的博客,右上角增加了实时的热门tags,用了控件的词云图 类型实现。
QQ截图20191017223025.png

以下是部署简要笔记







- 阅读剩余部分 -

由于担心客户使用可能会造成未知兼容问题的远古旧版浏览器,没错说的是IE。所以略微贴心地在首页加上检测,针对IE提示页面不兼容(免得js出错)

JS代码如下:

function isIe() {
    var i = navigator.userAgent.toLowerCase().indexOf("msie"); //对旧版ie9及以前版本有效
    if(i!=-1){
        return true;
    }else{
        //ie11 userAgent:  Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko
        return (!!window.ActiveXObject || "ActiveXObject" in window); //兼容ie10/11
    }
}
  • 只要是safari/firefox/chrome(包括用它内核的其他国产浏览器),我都不怎么担心,没有用太刁钻独占的特性。
  • 真的不是我懒,连巨硬自己都放弃了 EDGE研发线,拥抱chrome了。