请求乱码
需要在conf/server.xml中添加URIEncoding='UTF-8'
1 | <Connector port='8080' protocol='HTTP/1.1' connectionTimeout='20000' |
Tomcat请求回复体的缺省字符集编码是ISO-8859-1
我们开发的网站面对的是特定的人群,为了方便用户登录,做了IP登录,即用户只要在特定的网络环境下访问我们的网页,就可以直接登录。
但发现,用户在微信浏览器中访问我们的网页,但是同样网络环境下,用手机浏览器访问就不存在此问题。
首先面对这个情况-IP登录不行唯一的可能是IP地址变了,我用微信访问我们站点中的测试页面(IP及UA头部信息会贴出来),显示出用户的实际IP,发现,IP变了,那么对此只有一个可能性–微信进行了网络代理!!!
分别使用我手头的安卓手机魅蓝note5
和苹果手机iPhone6
下的微信客户端访问出问题的网页,获取对应的ip地址信息,结果如下,
看到这个结果,也要想到,是不是就这个网页存在此问题呢,我试试别的网页,如下为我自己搭建的站点,分别通过如上手机访问
阿偶,发现不存在代理信息,那就证明微信并不是所有站点都走代理
说明:
既然苹果版微信没有代理,而安卓版对于部分站点会存在代理,有这个差异,很大程度是苹果本身也严格,那么很容易想到国外版微信呢,毕竟谷歌商店也是很严格的,
so,下载了google商店的微信app,访问网站,发现与苹果一致,不存在代理ip问题。
X-Forwarded-For
,也就意味着,服务器端不可能拿到客户端的真实IP至于微信针对哪些站点,才会进行网络代理,那么这个就需要直接跟微信客服沟通得到了,单纯去测试找规律,费时且无意义。
app的开发牵扯两端,前端和后端,目前技术多种多样,存在很多选择,合适的场景即合适的需求,选择合适的技术,才是王道,技术只是工具。
因为我也做过了好多款app,所以这里总结一点心得体会。
app属于客户端,也可以叫做前端,目前有三种方案
Cordova
等跨平台框架,采用web开发方式进行开发,牵扯到底层硬件,采用js方式调用后端的方案就更多了,如php
、net
、java
、python
等,总而言之就是建议采用restful风格跟app即前端进行数据交互即可。
在实际的开发中,我也做的比较多了,对于小的APP项目,我建议采用ionic+expressjs的方案去dev。
所以倘若是小的项目,其实这是个不错的方案,当然如果APP后端需要管理平台,那也不是什么问题,有现成的架子可以用ng2-admin