Nginx delete 403

来自ling
跳转至: 导航搜索
总结一下问题原因: 
- 团队成员不熟悉HTTP协议,代码使用了小写的Method发http请求 
- .Net底层会自动转换Get/Post/Put为大写后再发请求,但是遗漏了Delete 
- nginx严格遵循http协议,只接收大写的METHOD; 
- nginx发现小写Method,直接返回错误,并跳过了后续的记录日志步骤 

排查过程走的弯路: 
- IIS没有区分大小写,导致测试和单台上线时未能验证到问题; 
- nginx没有记录下具体错误日志,无法排查; 
- 团队成员没有查看WebException.Response内容,且nginx无日志,以为代码未发现请求,浪费了大量时间; 
- PostMan和Fiddler的Composer的METHOD是下拉框,无法手动输入,因此无法重现; 
- C#代码里,request.Headers里不包括请求的METHOD和url,所以也未能第一时间验证