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

2022-11-01 16:16:34 +08:00
 zoeliu

各位大佬请求帮助!

公司网络是内网,前端服务部署在内网服务器 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

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

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

https://github.com/fatedier/frp

2 、暴力组网,使用 wireguard

https://github.com/WireGuard

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


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

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

具体可以看这个连接 https://blog.csdn.net/weixin_53458434/article/details/118673550
CheckTime
2022-11-01 19:55:39 +08:00
@CheckTime 如果是封装了请求方法的话就很容易改,直接在封装好的 putAction ,deleteAction, httpAction 等请求中根据 method 加个 header 就行
mikewang
2022-11-01 21:54:32 +08:00
为何不使用 https ?
zoeliu
2022-11-01 22:18:16 +08:00
@mikewang 只有 ip ,没有域名😅😅
zoeliu
2022-11-01 22:19:52 +08:00
@CheckTime 文章看过了。没有用 nginx ,加了一层 koa ,看看能不能转换 method🤐
谢谢
zoeliu
2022-11-01 22:21:01 +08:00
@Kinnice 应该是吧。但是我想确认下,用 wireshark 抓包看看能不能定位到呢
Xusually
2022-11-01 22:22:15 +08:00
大概率是 waf 或者前端负载均衡入口比如 kong 之类的没有开启 put/delete
lower
2022-11-01 23:35:24 +08:00
前段时间也遇到这个问题了;
解决办法很暴力:直接把 put delete 改成 post 了,批量替换其实也还好,没花多长时间,👿
nekoneko
2022-11-02 16:54:38 +08:00
@wdwwtzy #5 放十几年前确实有这个说法, 但是现在嘛, 啧啧, 一群抱残守缺的东西, 大概率国企出来的.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX