判断web访问是内网或是外网
最近在项目中添加一个支持外网下载的功能。因为内外网不同的下载URL,所以需要判断当前网络是否为外网。
首先方案是在java代码中判断
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
String urlProtocol = request.getScheme();
if (urlProtocol.equals("http")) {
//
} else {
//
}
理论上看这个问题,解决的比较完美,但是实际操作下来,还是有些问题,一直是http
,从来没有出现过https
,应该是应用经过nginx
转发,一直都是http,如果想在java中进行判断,需要再nginx
中进行配置,这种还是比较麻烦的。
然后我又转换思路,在js中进行判断,然后将判断结果反馈到后端。
var isHttps = 'https:' == document.location.protocol ? 1 : 0;
在js中很容易就实现判断内外网访问。