V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
NxxRngjnbgj
V2EX  ›  问与答

springboot 怎么根据条件丢弃客户端发送过来的请求

  •  
  •   NxxRngjnbgj · 65 天前 · 1072 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

    怎么根据条件,将客户端的请求直接丢弃,不做任何回应,只在代码层实现,是用拦截器的 postHandle 么,但是感觉不太对

    11 条回复    2024-09-24 17:47:02 +08:00
    sagaxu
        1
    sagaxu  
       65 天前
    你丢弃不做任何回应,网关就当作超时返回 504 了,甚至可能会把你这个服务从集群中移除。如果是 nginx ,可以返回特殊的状态码 444 ,关闭客户端连接。
    vivisidea
        2
    vivisidea  
       65 天前
    返回一个 httpstatus 200 (或其它 status ) 内容为空不行吗?

    状态码也不能返回?那 client 会认为超时了。。
    NxxRngjnbgj
        3
    NxxRngjnbgj  
    OP
       65 天前
    @vivisidea 对,就是让客户端感觉到超时了
    cookii
        4
    cookii  
       65 天前 via Android
    controller 返回一个 mono.never()即可
    Jinnrry
        5
    Jinnrry  
       65 天前
    你还是说下原始需求吧

    什么叫不做任何回应?返回一个状态码也是回应呀。你是想把 tcp 连接一直保持着,但是不回应数据?还是直接关掉 tcp 连接?

    这两种操作都得看你上层网关是怎么配置的,就像 1 楼说的很容易让网关觉得你服务挂了,直接给你服务器踢出列表了。
    yty2012g
        6
    yty2012g  
       65 天前
    使用了 Servlet 容器比较难直接操作关闭底层的连接。个人认为最简单的方法是写个 filter ,符合条件的直接 return 或者是 respose.getOutputStream().close(),但是这种依然会返回一个 200 ,只不过 content-length=0 。如果要是基于 Netty 的 WebServer ,到是可以直接 close connection ,那就彻底没有其他额外的返回了
    wshcdr
        7
    wshcdr  
       65 天前
    BS 天生就是 Request 和 Response ,你不 Response ? 除非你造 HTTP 的反
    vivisidea
        8
    vivisidea  
       65 天前
    @NxxRngjnbgj 那不行的,你啥都不响应,自己的线程也得搭进去陪着 sleep 在那,多来几个这样的请求 server 端线程池就满了,需求不合理,哪有这样实现丢弃的

    一般都是收到请求,不对请求做任何处理,直接返回个 200 完事,这叫丢弃
    NxxRngjnbgj
        9
    NxxRngjnbgj  
    OP
       64 天前
    @Jinnrry 就是很多非合规的请求,需要根据规则进行阻拦,目前领导的意思就是不要让客户端看出来是主动拦截的,所以我的第一想法是能不能丢掉
    NxxRngjnbgj
        10
    NxxRngjnbgj  
    OP
       64 天前
    @yty2012g 那看来没什么好办法,要实现估计难度也很高
    Jinnrry
        11
    Jinnrry  
       64 天前 via iPhone
    @NxxRngjnbgj 不能让客户端看出来?你的客户端是 h5 还是 app ?还是第三方 api ?

    不被看出来是不被普通用户看出来还是不被黑产看出来还是不被第三方研发看出来?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5558 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:52 · PVG 16:52 · LAX 00:52 · JFK 03:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.