使用Swift的Alamofire发POST请求到Windows Server返回404问题求助
客户端校验项
- 核对请求URL的完整拼写,包括端口
1015、路径/post的大小写是否和服务端配置完全一致,部分自定义服务、反向代理会对路径大小写做严格校验,可统一大小写后重试 - 主动添加
Content-Type请求头,避免低版本Alamofire编码异常导致请求格式不被识别,修改后代码参考:
let urlSend = "http://171.217.5.232:1015/post" let params = [ "Action": "sendCode", "Email": enteredEmail, "Code": code ] let headers: HTTPHeaders = [.contentType("application/json")] AF.request(urlSend, method: .post, parameters: params, encoder: JSONParameterEncoder.default, headers: headers).responseJSON { response in debugPrint(response) }
- 在服务器本地用curl/Postman工具模拟发送完全相同的JSON POST请求到该地址,如果本地请求也返回404,可直接确认问题出在服务端配置
服务端(Windows Server)常见问题排查
- 检查端口
1015上部署的服务是否允许POST请求:如果是IIS部署的站点,需在请求筛选配置中开放POST动词,同时确认应用路由是否正确配置了/post路径的POST处理逻辑 - 临时关闭CSRF校验测试:Windows服务默认的部分安全规则会拦截未携带CSRF令牌的POST请求,这类拦截可能返回404状态码
- 确认反向代理配置:如果服务器前部署了反向代理,检查代理规则是否完整转发POST请求的请求体,部分代理默认仅转发GET请求,POST请求会直接返回404
- 查看服务端访问日志,定位对应请求的具体拦截原因,确认是路径未匹配、请求方法不被允许还是参数格式被拦截
内容的提问来源于stack exchange,提问作者Sheldon Li
相关产品推荐
相关产品推荐

