| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * Copyright (c) 2015-2016, Michael Yang 杨福海 (fuhai999@gmail.com).
- *
- * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.gnu.org/licenses/lgpl-3.0.txt
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package io.jpress.utils;
- import javax.servlet.http.HttpServletRequest;
- public class RequestUtils {
- static String[] mobileAgents = { "iphone", "android", "phone", "mobile", "wap", "netfront", "java", "opera mobi",
- "opera mini", "ucweb", "windows ce", "symbian", "series", "webos", "sony", "blackberry", "dopod", "nokia",
- "samsung", "palmsource", "xda", "pieplus", "meizu", "midp", "cldc", "motorola", "foma", "docomo",
- "up.browser", "up.link", "blazer", "helio", "hosin", "huawei", "novarra", "coolpad", "webos", "techfaith",
- "palmsource", "alcatel", "amoi", "ktouch", "nexian", "ericsson", "philips", "sagem", "wellcom", "bunjalloo",
- "maui", "smartphone", "iemobile", "spice", "bird", "zte-", "longcos", "pantech", "gionee", "portalmmm",
- "jig browser", "hiptop", "benq", "haier", "^lct", "320x320", "240x320", "176x220", "w3c ", "acs-", "alav",
- "alca", "amoi", "audi", "avan", "benq", "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang",
- "doco", "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi", "keji", "leno", "lg-c", "lg-d", "lg-g",
- "lge-", "maui", "maxo", "midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki",
- "oper", "palm", "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", "sany", "sch-",
- "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony", "sph-", "symb", "t-mo",
- "teli", "tim-", "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", "wapr", "webc",
- "winw", "winw", "xda", "xda-", "googlebot-mobile" };
- public static boolean isAjaxRequest(HttpServletRequest request) {
- String header = request.getHeader("X-Requested-With");
- return "XMLHttpRequest".equalsIgnoreCase(header);
- }
- public static boolean isMultipartRequest(HttpServletRequest request) {
- String contentType = request.getContentType();
- return contentType != null && contentType.toLowerCase().indexOf("multipart") != -1;
- }
- /**
- * 是否是手机浏览器
- *
- * @return
- */
- public static boolean isMoblieBrowser(HttpServletRequest request) {
- String ua = request.getHeader("User-Agent");
- if (ua == null) {
- return false;
- }
- ua = ua.toLowerCase();
- for (String mobileAgent : mobileAgents) {
- if (ua.indexOf(mobileAgent) >= 0) {
- return true;
- }
- }
- return false;
- }
- /**
- * 是否是微信浏览器
- *
- * @return
- */
- public static boolean isWechatBrowser(HttpServletRequest request) {
- String ua = request.getHeader("User-Agent");
- if (ua == null) {
- return false;
- }
- ua = ua.toLowerCase();
- if (ua.indexOf("micromessenger") > 0) {
- return true;
- }
- return false;
- }
- /**
- * 是否是IE浏览器
- *
- * @return
- */
- public static boolean isIEBrowser(HttpServletRequest request) {
- String ua = request.getHeader("User-Agent");
- if (ua == null) {
- return false;
- }
- ua = ua.toLowerCase();
- if (ua.indexOf("msie") > 0) {
- return true;
- }
- if (ua.indexOf("gecko") > 0 && ua.indexOf("rv:11") > 0) {
- return true;
- }
- return false;
- }
- public static String getIpAddress(HttpServletRequest request) {
- String ip = request.getHeader("X-requested-For");
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("X-Forwarded-For");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("HTTP_CLIENT_IP");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("HTTP_X_FORWARDED_FOR");
- }
- if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- }
- return ip;
- }
- public static String getUserAgent(HttpServletRequest request) {
- return request.getHeader("User-Agent");
- }
- }
|