gpt4 book ai didi

rest - PATCH 方法被防火墙阻止?

转载 作者:行者123 更新时间:2023-12-03 17:08:54 25 4
gpt4 key购买 nike

嗨,有人遇到过 PATCH 的情况方法超过 XHR (AJAX 请求)被防火墙阻止?

基本上,我们遇到过客户提示他无法更新我们应用程序上的内容的情况。我们在世界各地检查了它是否正常工作(我们通过 VPN 连接了几个地方)

然后他们为我们提供了一个远程桌面(最新的 Windows、最新的 chrome),所以我们从他们的网络上亲自尝试了它,他们是对的。所有 PATCH 方法通过 AJAX调用以 405 结束,但全部为 PUT POST DELETE GET方法很好。我们试图在应用程序和 Nginx 中跟踪这些 PATCH 请求。日志,但似乎他们从未访问过我们的服务器。所以结论是他们的防火墙更新让请求离开了大楼。

普通的:

| Laptop PATCH  ->  Clients Firewal   ->   Load Balancer   ->  Nginx proxy  -> Rails app (200 response) |

这个防火墙案例:
| Laptop PATCH ->  Clients Firewal  (405 response)   |

由于没有时间对此进行调查,我们只是将其中一些有问题的端点从 PATCH 更改为 PUT,并且一切正常!

我唯一的解释是因为 PATCH 是另一个(稍后介绍)RFC 的一部分,所以他们的防火墙必须是 super 旧的,并且没有将 PATCH 注册为有效方法。他们的系统管理员不知道为什么会这样。但一个线索是应用程序是 EdTech,客户是学校 => 他们不一定在他们的网络堆栈上拥有最新的技术。也可以预设保姆软件。

对同一问题的 Reddit 讨论的交叉引用: https://www.reddit.com/r/rest/comments/5gkvba/patch_blocked_by_firewall/

最佳答案

仍然不太清楚为什么会发生这种情况,但我很确定这是由于 PATCH 方法比防火墙设置更年轻。

基本上正确的解决方法是用 POST 替换 PATCH,因为两者都是非幂等的。

HTTP 标准最佳实践告诉你不应该用 PUT 替换它,尽管一些 web 框架(如 Ruby on Rails)让它太容易了。问题是,由于中间设备重复 PUT,您可能会遇到其他问题,因为它是幂等的。

我在文章 http://www.eq8.eu/blogs/37-post-create-and-put-updatepost 中总结了整个故事。

关于rest - PATCH 方法被防火墙阻止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com