获取referer中的请求参数_javaweb之request获取referer请求头实现防盗链
时间: 2024-02-27 18:57:30 浏览: 80
您可以使用JavaWeb中的HttpServletRequest对象的getHeader方法来获取referer请求头,然后再从中提取请求参数。以下是一个示例代码:
```
String referer = request.getHeader("referer");
if (referer != null && referer.contains("?")) {
String query = referer.substring(referer.indexOf("?") + 1);
String[] params = query.split("&");
for (String param : params) {
String[] keyValue = param.split("=");
String key = keyValue[0];
String value = keyValue[1];
// 处理参数
}
}
```
此代码首先获取referer请求头,然后检查是否包含请求参数(使用“?”分隔)。如果有,它会从查询字符串中提取参数并将其拆分为键值对。然后,您可以按照需要处理这些参数。此代码还应该考虑到一些安全问题,例如检查referer是否来自您的网站。
相关问题
javaweb防盗链实现
在JavaWeb中,防盗链是指通过一些技术手段,防止其他网站直接链接到本站的资源,从而保护本站的资源不被盗用。常见的防盗链技术包括:HTTP Referer检查、加密URL、动态生成图片等。其中,HTTP Referer检查是最常用的一种方法。具体实现方法可以通过在web.xml中配置Filter或者在JSP页面中嵌入Java代码实现。在JSP页面中嵌入Java代码实现防盗链的方法可以使用<exec:ref/>代替嵌套在JSP文件中的Java代码,从而简化页面布局,使繁琐的Java代码从JSP页面中消失。同时,也可以通过创建RefTag类并继承SimpleTagSupport类,覆盖父类的doTag()方法来实现防盗链。在doTag()方法中,需要获取request对象和response对象,然后通过request.getHeader("Referer")方法获取请求头中Referer字段中的内容,判断是否是合法的请求,如果不合法则重定向到合法主页并返回,不显示余下的内容。
代码演示怎样获取该方法所需的请求private String getRequestSource(HttpServletRequest request) { String source = request.getHeader("Referer"); // 从请求头中获取来源信息 if (source == null || source.isEmpty()) { source = request.getParameter("source"); // 从请求参数中获取来源信息 } return source; }
假设你在一个Servlet类中使用该方法,可以这样获取HttpServletRequest对象并调用getRequestSource()方法:
```
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String source = getRequestSource(request);
// 处理获取到的来源信息
}
private String getRequestSource(HttpServletRequest request) {
String source = request.getHeader("Referer"); // 从请求头中获取来源信息
if (source == null || source.isEmpty()) {
source = request.getParameter("source"); // 从请求参数中获取来源信息
}
return source;
}
}
```
在doGet()方法中,先获取HttpServletRequest对象,然后调用getRequestSource()方法获取请求的来源信息。在getRequestSource()方法中,先从请求头中获取Referer信息,如果获取不到或者为空,则从请求参数中获取source参数。最后返回获取到的来源信息。
阅读全文