2015-10-07 17:17:18 xi_2130 阅读数 524

最近做一个微信公众平台的一个订购网页,产生了好多问题,下面是问题与解决方法,欢迎指正学习。

1.如何只让网页在微信打开,其他浏览器拒绝访问?

因为是个订购网页,所以会牵扯恶意用户通过其他途径注册,购买,造成不必要的麻烦。
其他有一种常用的解决方法,那就是使用post提交方式,这样就保证了数据的安全性。可是也是存在一些弊端的,比如,外部还是可以查看网页界面的,如果我不想让通过其他途径看到界面呢,这样保证了数据的绝对安全。

大家都是到微信用的是x5的内核,既然是微信,这么大一个东西,肯定有与众不同的地方,经过百度查阅,我是用这个方法解决的,(原理就是判断其中某一个标志性的东西,判断他的访问来源,从而判断是不是通过微信访问的,博主走马观花,也就会用)

var useragent = navigator.userAgent;
if (useragent.match(/MicroMessenger/i) != 'MicroMessenger') {
    //不是通过微信访问的
}else{
    //执行正常,通过微信访问
}

这样就轻松解决了,安全问题,我的做法是,这网页的head头部里面直接进行判断,如果不是微信,那么直接跳转错误界面。

2. 跨页面数据传输

这个其实已经不是微信开发特有的,当然也是个大问题,我就说说。

1.form表单提交,这个单价一般都会用。method : get/post

2.window.location.href?name=’ys’;
这个有点类似于get方法,优点就是可控制性强,可以随时进行跳转。某些情况下挺有用的,比如:
ok执行代码,error执行代码,可以随意判断跳转页面。

3.利用ajax进行传输
如何实现,可以查看 原生实现ajax
当然这个方法和后天进行数据交互用的较多。

4.利用cookie存数据

//arg1 名字, arg2 值, arg3过期时间
function setCookie(objName,objValue,objHours){  //添加cookie 
    var str = objName + "=" + escape(objValue); 
    if(objHours > 0){                           //为0时不设定过期时间,浏览器关闭时cookie自动消失 
        var date = new Date(); 
        var ms = objHours*1000; 
        date.setTime(date.getTime() + ms); 
        str += "; expires=" + date.toGMTString(); 
    } 
    document.cookie = str; 
} 
//清除cookie
function clearCookie(objName){
    var arrStr = document.cookie.split("; ");
    for(var i = 0;i < arrStr.length;i ++){
        var temp = arrStr[i].split("=");
        var date = new Date();
        var ms = -100*1000; //过期时间为100s以前,
        date.setTime(date.getTime() + ms); 
        document.cookie = temp[0] + "= ''; expires=" + date.toGMTString();;
    }
}
//根据名字获得cookie值
function getCookie(objName){
    //从cookie变量中获取指定的值          
    var arrStr = document.cookie.split("; ");
    for(var i = 0;i < arrStr.length;i ++){
        var temp = arrStr[i].split("=");
        if(objName == temp[0]){
            return unescape(temp[1]);
        }
    }
}

在代码中,我设置过期时间为100s前,在夸页面以后,由于立马设置了他的过期时间,所以导致他的数据就失效了,所以跨页面之后,我们要先保存cookie数据,然后就清除cookie,这样可以防止有些用户按返回键,cookie存留,造成数据冲突的bug。

目前就这么些问题,有了问题在更新吧……

2018-04-10 21:48:41 hu_feng903 阅读数 8752

刚接触微信开发,对后台设置的几个域名有点搞不清。

看下微信后台 公众号设置-功能设置里面,具体内容见下图:


1.业务域名 :据说是微信浏览器中访问域名内容,和提示红色安全提醒,添加到这里面的域名就不存在这个问题。好像现在没遇到过。 也不知道是否有其他用处,现在微信后台(服务号设置3个

2.JS接口安全域名: 主要是基于微信的js开发相关功能,如自定义分享功能,录音,上传视频等。具体参见https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 (服务号,订阅号均可设置3个

3.网页授权域名: 主要是基于微信的网页授权,获取用户的基本信息。 (服务号可设置1个),因为只能设置一个,所以很多时候公众号不够用。最近开发遇到这个情况,是直接在可以绑定的域名项目里添加个接口,主要功能是实现授权。授权成功把需要获取的用户信息加到get参数中,跳转回要开发的内容。在进行存session之类的操作。

希望可以帮到需要的同学

2017-09-20 21:40:41 hadoopxsy 阅读数 3248

众所周知,在我们pc端的浏览器上,当后台改动css,或者js等代码的时候,需要浏览器清除缓存,页面才能重新加载,显示最新的样式或内容;

但是,如果我们的在手机端呢?比如说,我们开发一个微信服务号来实现一个微商场。突然有一天,客户要求升级或者改动一部分样式,这时我们在后台很rasy的搞定了,

但是会发现,微信页面根本样式就没变,搞了一下午原来是缓存的问题!但是发现怎么清理缓存啊!而且大部分用户根本就不知道“缓存”这回事:经过测试和努力找到了一下解决方案:

1、取消关注该微信公众号,重新关注即可(这很影响用户体验)

2、清理微信内存,关闭微信,再重新登录(太折腾)

3、给引入网页的css文件,或超链接  加参数时间戳:time=${time}   (终极解决方案)

例如:

<link rel="stylesheet" href="<%=basePath %>css/public.css?time=${time}">

当后台修改public.css文件内容时,微信服务号会重新加载最新的时间戳内容。这里的${time}  是从后台传过来的System.currentTimeMillis()值


同理,超链接也是如此!


这样做会使每次都重新加载内容会使反映时间加长,不过那也是在用户量访问大的时候!毕竟功能的展现啊!!!


2017-10-30 21:49:00 zsc2014030403015 阅读数 337

现在开始学习微信公众号开发,所以会记录我在这个过程中遇到的坑点和新手对于微信文档理解不清的问题。

1.微信上面的操作都是采用接口的形式开发

在这里面难免会对微信开发存在不理解,因为公众号开发的具体修改内容都要通过微信服务器来转发,所以这里面就出现了与传统的做法不同,必须使用接口来进行微信上面的配置。

2.微信开发如何网页授权

在刚开始开发的时候,看文档的时候一头雾水。都说使用什么接口来进行获取code,但是如何触发这个url呀。之后百度也没有结果,多数都是重复微信公众号上面的说明一下而已,没说怎么触发。对于我这个小白很是烦恼,最后想到了应该可以将这段代码放在自定义菜单上的按钮身上,这样子点击按钮就可以触发了。

3.微信上的urlencode使用

在看文档的时候说要进行网址授权后重定向的回调链接地址,请使用urlEncode对链接进行处理之后发现巨坑,这里我使用php自带的urlencode来处理网址,结果在点击按钮的时候竟然直接是一个下载页面,下载一个空文件。之后不转就可以出效果了。

4.微信开发网页授权

在开发的时候我以为只要使用curl来get请求就ok了
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

之后发现原来我的想法错了,忘记了一件事情。这里面有个跳转url,所以如果是当作请求来做,根本没有微信授权页面出现,一开始我不清楚为什么不出现这个授权页面,之后发现原来是要重定向url才是正道,不然也不会给个回调url给你了。第一次写微信网页授权懵在这个小细节了。


微信JSSDK多图片上传

阅读数 18420

没有更多推荐了,返回首页