request.getHeader 获取不到参数是为空吗
时间: 2023-06-09 20:07:06 浏览: 62
?CSDN开发的ChitGPT:
通常情况下,request.getHeader方法返回null代表该header不存在,而不是参数为空。您可以根据返回值是否为null来判断是否存在对应header。另外,请确保您使用了正确的header名称,并且该header确实在请求中存在。
相关问题
ngnix代理之后拿不到request.getHeader怎么解决
如果NGINX代理之后,你无法获取到原始请求头部信息,可以通过在NGINX配置文件中添加如下配置来解决:
```
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他代理参数
# ...
proxy_pass http://your_upstream;
}
```
其中 `proxy_set_header` 参数可以设置需要传递给上游服务器的请求头部信息,比如 `X-Real-IP` 和 `X-Forwarded-For` 可以用来传递客户端 IP 地址信息,以便上游服务器能够正确获取客户端真实 IP。
代码演示怎样获取该方法所需的请求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参数。最后返回获取到的来源信息。