阅读量:1
在生产中遇到个问题,用户服务器转发不支持PUT请求和DELETE请求,这是什么鬼问题,查阅了下资料,PUT请求和DELETE请求被认为是不安全的,所以没办法,必须得处理这种情况
问题处理
前端处理和nginx处理,前端axios实例将PUT和DELETE请求改为POST请求,并设置特殊请求头标志,在nginx中判断设置请求标志
前端axios处理
//判断下当前主机环境是否需要替换put和delete请求 if(window.location.host == "xxx"){ const method = config.method.toUpperCase() if(method== "PUT" || method == "DELETE"){ // 改写post请求 config.method = "post" // 添加请求标志 config.headers['X-HTTP-Method-Override']=method } }
nginx配置
在server块配置和location块配置即可,
注意:如果配置指令不能复制需要手敲的时候,重启的时候出现未知指令,并且其他都没有问题的情况下,注意检查下if后边的空格(if 后边要有空格),这大坑,排查了半天
set $method $request_method; if ($http_X_HTTP_Method_Override ~* 'PUT|DELETE') { set $method $http_X_HTTP_Method_Override; } proxy_method $method;