PUT和DELETE部署在内网服务器后 外网无法请求的问题
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
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
HeaderX-HTTP-Method-Override: PUT
或
HeaderX-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了
下面是我对这个解决方法的理解
文章最后感谢一下帮助我的朋友以及引用文章的大佬
如果遇到相同问题希望这篇文章能够帮助到你
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |