get请求获取不到参数

问题描述:

后台管理系统进行跳转时,get传参后端接收不到。

排错过程:

  1. 检查前段页面参数命名。
  2. 打印所有GET请求参数,并没有参数被传递。
  3. 查看nginx-access与error日志,发现无报错,请求日志url也正常,返回200。(坑)
  4. 由于环境是刚搭的nginx环境,项目跑了很久,故问题一定出在环境上。
  5. 查看nginx配置,发现nginx重写时,没有拼接参数。(迷)

解决方法:

将`try_files $uri /index.php; `改为`try_files $uri /index.php?$query_string;`,其中,$query_string为nginx接收的url参数。

知识恶补:

因为nginx接收到的url确实为带参数拼接的所以请求日志记录为有拼接的正确url。但是nginx有重写,导致内部重定向时无拼接参数。如:

www.xxxx.com/xxx?aa=1&bb=2

boot/xxx

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中的Filter是一种拦截所有请求的方式,无论是GET请求还是POST请求都会被Filter拦截到。但是有时候会遇到Filter获取不到POST请求参数的情况,这时候需要检查一下请求头中的Content-Type是否是application/x-www-form-urlencoded。 如果Content-Type是application/x-www-form-urlencoded,则需要通过HttpServletRequest.getParameter()方法来获取请求参数。例如: ``` java public class MyFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 获取请求参数 String param1 = request.getParameter("param1"); String param2 = request.getParameter("param2"); ... // 继续处理请求 chain.doFilter(request, response); } } ``` 如果Content-Type是application/json,则需要通过读取请求体来获取请求参数。例如: ``` java public class MyFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 获取请求体 BufferedReader reader = request.getReader(); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } // 解析JSON参数 JSONObject json = JSONObject.parseObject(sb.toString()); String param1 = json.getString("param1"); String param2 = json.getString("param2"); ... // 继续处理请求 chain.doFilter(request, response); } } ``` 总之,要根据请求头中的Content-Type来确定获取POST请求参数的方法,否则会导致获取不到参数的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值