V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zoeliu
V2EX  ›  程序员

内网服务开放外网映射后, PUT/DELETE 方法被 net::ERR_CONNECTION_RESET。该如何设置服务器允许 PUT/DELETE 方法?

  •  
  •   zoeliu · 2022-11-01 16:16:34 +08:00 · 2041 次点击
    这是一个创建于 513 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬请求帮助!

    公司网络是内网,前端服务部署在内网服务器 A ,后端服务部署在内网服务器 B.

    寻找公司 IT 开放服务器 A 的端口映射至外网,发现 在外网地址访问时 使用 PUT/DELETE 请求被限制,报错:net::ERR_CONNECTION_RESET 。

    但在内网地址访问时,各种请求方法都正常。

    网上查阅发现是防火墙限制的问题,如下述 - https://gitee.com/y_project/RuoYi-Vue/issues/I4NFP2 - https://github.com/acm309/PutongOJ/issues/4

    方向是需要在防火墙开放 PUT/DELETE 方法。由于公司没有运维,查询不得其法。询问 IT 说他那边只能设置映射端口,并没有防火墙设置。

    这个设置是在服务器上可以解决吗,如果设置是服务器 A 还是 B ?还是无法解决只能全改为 POST 了?= =

    卑微前端,在线求助!(在站内也搜到了关于 restful 的争论,不争论什么好什么不好安不安全,解决问题就好,走过路过给点建议 QAQ

    16 条回复    2022-11-02 16:54:38 +08:00
    NessajCN
        1
    NessajCN  
       2022-11-01 17:01:36 +08:00
    防火墙没法判断是不是 PUT/DELETE 的
    你应该去检查下是不是 api 里没写怎么处理这两种请求
    cpstar
        2
    cpstar  
       2022-11-01 17:11:15 +08:00
    @NessajCN 1# 有的防火墙带七层过滤是可以做拦截的
    Kinnice
        3
    Kinnice  
       2022-11-01 17:12:02 +08:00
    被公司内 waf 拦截了吧,改路由吧
    humbass
        4
    humbass  
       2022-11-01 17:23:58 +08:00   ❤️ 1
    前端掌握一些基础的 linux 知识还是有必要的:

    1 、先尝试 frp 转发的形式暴露服务

    https://github.com/fatedier/frp

    2 、暴力组网,使用 wireguard

    https://github.com/WireGuard

    服务器端用 nginx 反向代理即可


    以上两者都需要远程的服务器,以及本地服务器操作权限
    wdwwtzy
        5
    wdwwtzy  
       2022-11-01 17:26:29 +08:00
    是的,我记得某些 waf 是可以拦截 http 方法的。
    而且,我某一家公司的 sb 网关确实是这么做的,然后说 put/delele 方法不安全,所以要关闭🙂
    zoeliu
        6
    zoeliu  
    OP
       2022-11-01 17:29:57 +08:00
    @humbass 谢谢你。但是公司内网做外网映射要提工单。私自设置内网风险太大了把。

    目前前端还有个中间层,整体代码是供应商做的,供应商的一套 koa 的三方库,代理不太好改。
    如果直接是 nginx 我可以改
    ysc3839
        7
    ysc3839  
       2022-11-01 18:44:01 +08:00
    你能改代码的话建议改成 POST ,或者用 https ?
    CheckTime
        8
    CheckTime  
       2022-11-01 19:53:22 +08:00
    前端请求根据不同方法加 header ,nginx 根据 header 中某个变量的值修改 method 。

    具体可以看这个连接 https://blog.csdn.net/weixin_53458434/article/details/118673550
    CheckTime
        9
    CheckTime  
       2022-11-01 19:55:39 +08:00
    @CheckTime 如果是封装了请求方法的话就很容易改,直接在封装好的 putAction ,deleteAction, httpAction 等请求中根据 method 加个 header 就行
    mikewang
        10
    mikewang  
       2022-11-01 21:54:32 +08:00 via iPhone
    为何不使用 https ?
    zoeliu
        11
    zoeliu  
    OP
       2022-11-01 22:18:16 +08:00 via Android
    @mikewang 只有 ip ,没有域名😅😅
    zoeliu
        12
    zoeliu  
    OP
       2022-11-01 22:19:52 +08:00 via Android
    @CheckTime 文章看过了。没有用 nginx ,加了一层 koa ,看看能不能转换 method🤐
    谢谢
    zoeliu
        13
    zoeliu  
    OP
       2022-11-01 22:21:01 +08:00 via Android
    @Kinnice 应该是吧。但是我想确认下,用 wireshark 抓包看看能不能定位到呢
    Xusually
        14
    Xusually  
       2022-11-01 22:22:15 +08:00 via iPhone
    大概率是 waf 或者前端负载均衡入口比如 kong 之类的没有开启 put/delete
    lower
        15
    lower  
       2022-11-01 23:35:24 +08:00
    前段时间也遇到这个问题了;
    解决办法很暴力:直接把 put delete 改成 post 了,批量替换其实也还好,没花多长时间,👿
    nekoneko
        16
    nekoneko  
       2022-11-02 16:54:38 +08:00
    @wdwwtzy #5 放十几年前确实有这个说法, 但是现在嘛, 啧啧, 一群抱残守缺的东西, 大概率国企出来的.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1152 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 23:01 · PVG 07:01 · LAX 16:01 · JFK 19:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.