最近开发一个填写表单,后台生成固定模板的程序遇到了坑,记录下,如果大家遇到可以参考下。
使用框架: spirngboot + mybatis +mysql + redis + thymeleaf(页面展示) + freemarker(word模板)
业务场景:
由于公司购买阿里云服务器,并没有购买域名,想着公司内部使用,不要域名也罢,就出现这个问题。
微信有个安全机制就是访问IP形式A的url 是会有安全提醒是否继续访问。点击继续就会跳转下一个B的url,
win开发环境完全没有问题,放至linux服务器时报出A的url 各种幺蛾子错误。
用排除法花了1整天时间结果找到时候,人都傻了。
1.the right syntax to use near ‘’ at line 1
报出mapper返回主键行有问题。使用的是mybatis useGeneratedKeys 怎么处理都不行,以为mybaits版本有问题,
换了几个都不行,实在搞不定,后来直接换成java 直接生成主键。
2.java.lang.NullPointerException
报出mapper插入insert空指针。老鸟多年,从来没有遇到过这样的问题,又以为包冲突,换了几个还是不行,
用本机natapp内网外穿搭建平台在微信上怎么试怎么行,百思不得其解。
3.生产环境数据库竟然已存储业务A的数据
偶然查了下生产库,竟然发现业务A代码虽然报错,但是业务A代码竟然已经执行成功了。当时搞了1天人都是
懵的,不知道发生了什么。后来下班路上才想起开发环境用的是natapp产生的域名,而访问生产环境时候用的IP,
那么生产环境中A代码其实已经执行,只不过成功转发至B的url时候,微信安全提示以及跳转出现了错误。
总结:
微信其实并不对post ,get请求进行拦截,他只对跳转url时候进行安全提示,但是提示内容以及点击继续访问url时
微信出现了问题,结果浪费了1天时间。
想解决这个办法也很简单,购买域名。。。当然不购买也可以使用ajax提交表单使用 ,使用js进行页面重定向。
虽然有提示破坏用户体验,但是也能勉强使用。。