PUT和DELETE部署在内网服务器后 外网无法请求的问题
这问题困扰我好几天,本身就不是搞运维的,且实习时长 俩年半 半年的小辣鸡, 被赶鸭子上架
系统部署在甲方的内网服务器里,然后他们通过VLAN穿透到外网访问(我也听不懂是什么意思)
系统部署在内网服务器后,登录上去康康,发现在外网情况下有些接口可以使用有些不能使用
错误都是 500 ,百思不得其解,遂于晚上问了师兄,然后排查出问题可能是存在服务器那边不接收PUT和DELETE的请求的情况
在控制台的Network中,发现post和get请求完全可以,而PUT和DELETE请求一直报500
隔天找了甲方管理服务器的人,说明了一下情况,他们居然问我,什么是PUT和DELETE?
本因昨晚找到可能原因的好心情在这一瞬间裂开。
无奈之下只能在百度看看有什么解决方法了
随后就发现了这篇文章 ! https://blog.csdn.net/weixin_45552405/article/details/121905843
直接开始动手尝试
在内网服务器的nginx的server中填加了以下的东西
server { set $method $request_method; if ($http_X_HTTP_Method_Override ~* 'DELETE') { set $method DELETE; } if ($http_X_HTTP_Method_Override ~* 'PUT') { set $method PUT; } proxy_method $method; }
开始修改前端代码
将所有 delete 和 put 接口都改成 post
然后在对应的请求上加上 (原本是PUT就加PUT)
Header:X-HTTP-Method-Override: PUT
或
Header:X-HTTP-Method-Override: DELETE
看个人项目请求的方式去添加哈,以下作为参考
put
delete
修改好后开始测试
在Request Headers中有了 X-HTTP-Method-Override: PUT ,原本PUT的请求变成了POST,而且能够成功去访问修改数据!
Request Headers
POST请求成功!
然而DELETE出了问题,还是无法调用到接口
疯狂看 NetWork看看到底问题在哪里
发现是参数出了错误
DETELE接口下参数为 Query
而修改成POST时,参数变成了 Body
修改一下对应的接口参数就OK了
下面是我对这个解决方法的理解
文章最后感谢一下帮助我的朋友以及引用文章的大佬
如果遇到相同问题,希望这篇文章能够帮助到你
来源地址:https://blog.csdn.net/weixin_52531602/article/details/128241072