应对公司双验证要求,对本系统做邮箱、短信验证码登录,本地开发正常发送,到服务器上部署却使用失败,已全部解决,记录坑。
一、nginx拦截
先打开你的服务器 nginx.conf 看看有没有做接口拦截。(本地可能做SpringSecuriy拦截,但nginx可能也做了拦截,至少我有。放开对应拦截)
二、请求类型 Get
一开始我发生验证码是get请求,校验验证码是post请求。
在此拦截放开后,post请求正常执行,get请求不行,后端毫无响应。把发生验证码也改成post请求吧,写个dto的事。
三、邮箱正常发生校验、短信还是不行
经过上述方案,邮箱已经正常了,但短信还是不行。我用的是阿里云短信服务。
但因为改成post请求,后端有响应了,可以看到报错信息。
第一个问题是,timeout超时。报
com.aliyuncs.exceptions.ClientException: SDK.ServerUnreachable : Server unreachable: java.net.ConnectException: Connection timed out (Connection timed out)
巧了hhhhh我就是上海,直接抄了。但是紧接着又报这个
com.aliyuncs.exceptions.ClientException: InvalidTimeStamp.Expired : Specified time stamp or date value is expired.
服务器时间和阿里云时间相差超过15分钟
记得用sudo,需要管理员权限。