|
|
|
@ -0,0 +1,66 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* https://www.mall4j.com/
|
|
|
|
|
*
|
|
|
|
|
* 未经允许,不可做商业用途!
|
|
|
|
|
*
|
|
|
|
|
* 版权所有,侵权必究!
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package com.yami.shop.common.util;
|
|
|
|
|
|
|
|
|
|
// 导入Spring相关的类,用于获取请求相关的上下文信息,基于请求上下文来获取HttpServletRequest对象
|
|
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
|
|
|
|
// 导入Servlet相关的类,用于操作HTTP请求,这里主要是HttpServletRequest,它包含了请求相关的各种信息
|
|
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* HttpContextUtils工具类,主要提供了一些与HTTP请求上下文相关的便捷获取方法,
|
|
|
|
|
* 通过Spring的请求上下文机制来获取HttpServletRequest对象,并基于该对象进一步获取如请求域名、请求来源等相关信息,
|
|
|
|
|
* 方便在项目的其他地方使用这些信息进行业务逻辑处理,例如跨域处理、链接构建等场景。
|
|
|
|
|
*
|
|
|
|
|
* @author lanhai
|
|
|
|
|
*/
|
|
|
|
|
public class HttpContextUtils {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取当前线程绑定的HttpServletRequest对象。
|
|
|
|
|
* 通过Spring的RequestContextHolder从请求上下文中获取ServletRequestAttributes对象,
|
|
|
|
|
* 再从中提取出HttpServletRequest对象。该方法是后续获取其他请求相关信息的基础。
|
|
|
|
|
*
|
|
|
|
|
* @return HttpServletRequest 返回当前请求对应的HttpServletRequest对象,
|
|
|
|
|
* 如果不存在绑定的请求上下文则会抛出异常(运行时异常),调用者需要进行相应处理。
|
|
|
|
|
*/
|
|
|
|
|
public static HttpServletRequest getHttpServletRequest() {
|
|
|
|
|
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取当前请求的域名信息。
|
|
|
|
|
* 首先调用getHttpServletRequest方法获取当前的HttpServletRequest对象,
|
|
|
|
|
* 然后通过该对象的getRequestURL方法获取完整的请求URL(包含协议、域名、端口、路径等),
|
|
|
|
|
* 再利用getRequestURI方法获取请求的路径部分,通过删除URL中路径及后面的部分来得到域名相关信息(包含协议、域名、端口)。
|
|
|
|
|
*
|
|
|
|
|
* @return String 返回当前请求的域名信息(格式类似:http://example.com:8080,具体取决于实际请求情况)。
|
|
|
|
|
*/
|
|
|
|
|
public static String getDomain() {
|
|
|
|
|
HttpServletRequest request = getHttpServletRequest();
|
|
|
|
|
StringBuffer url = request.getRequestURL();
|
|
|
|
|
return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取当前请求的来源(Origin)信息,通常用于处理跨域相关场景。
|
|
|
|
|
* 先获取当前的HttpServletRequest对象,然后通过该对象的getHeader方法获取名为"Origin"的请求头信息,
|
|
|
|
|
* 该请求头一般由浏览器自动添加,标识了请求的来源域名等信息,在跨域请求等场景中有重要作用。
|
|
|
|
|
*
|
|
|
|
|
* @return String 返回当前请求的Origin信息(格式类似:http://example.com,如果有Origin请求头的话,否则返回null等情况)。
|
|
|
|
|
*/
|
|
|
|
|
public static String getOrigin() {
|
|
|
|
|
HttpServletRequest request = getHttpServletRequest();
|
|
|
|
|
return request.getHeader("Origin");
|
|
|
|
|
}
|
|
|
|
|
}
|