niebaohua 发表于 2020-3-8 13:55

关于ssm项目拦截器拦截post请求



拦截器不能拦截post请求的控制器吗


个用来播放直播的播放器

使用的是post请求,
如果登录了就可以正常观看

非登录用户,报错405

- 控制器代码
```java
    @RequestMapping("/play")
    public String play(String href,
                     String title,
                     Model model) {
      model.addAttribute("href", href);
      model.addAttribute("title", title);
      return "live/ckplayer";
    }
```

- 前台代码
```js
      function submit(href, title) {
            var path = "\/springboot\/" + "live/play";
                console.log(path)
            // 动态表单的创建
            var form = document.createElement("form");
            form.action = path;
            form.method = "post";
            input1 = document.createElement("input");
            input2 = document.createElement("input");
            input1.type = "hidden";
            input1.name = "href";
            input1.value = href;
            input2.type = "hidden";
            input2.name = "title";
            input2.value = title;
            form.appendChild(input1);
            form.appendChild(input2);
            form.target = '_blank';
            document.body.appendChild(form)
            console.log(form)
            form.submit();
            document.body.removeChild(form);
            ;
      }
```

- 未登录状态访问,报错
!(http://yanxuan.nosdn.127.net/67815fdf3c136af5bfd545fe9fb3ba3e.png)

孤寂琉璃月 发表于 2020-3-8 14:44

可以拦截 但是post形式的body获取在切面使用一次以后 其他接口再获取会出现无法使用的问题 所以必须经过一层转换以后再读取。
可以参考我的一篇博客,不要完全照抄,因为不是一套东西 但是原理差不多:https://blog.csdn.net/tutian2000/article/details/103729613

niebaohua 发表于 2020-3-8 15:01

孤寂琉璃月 发表于 2020-3-8 14:44
可以拦截 但是post形式的body获取在切面使用一次以后 其他接口再获取会出现无法使用的问题 所以必须经过一 ...

看得不太懂,还没学spring cloud, “因为 由于使用的是html文件, 它不支持响应头带有post的应答包,所以会报错。”
在网上看到的,是这样吗
页: [1]
查看完整版本: 关于ssm项目拦截器拦截post请求