現象
HTTP 請求正常,HTTPS 請求返回 400 Bad Request。
常見原因
- 跨域 (CORS):HTTPS 頁面請求 HTTP 接口(混合內容被瀏覽器攔截),或接口未配置
Access-Control-Allow-Origin。
- 證書驗證失敗:自簽名證書、證書鏈不全、域名不匹配,導致 TLS 握手失敗(表現為網絡層錯誤,非 400)。
- 請求體格式錯誤:
Content-Type 不匹配(如發 JSON 但標為 form-data),服務端解析失敗返回 400。
- 客戶端網絡庫 Bug:iOS/macOS 上
AFNetworking 某版本處理 HTTPS 重定向/證書驗證有缺陷。
排查步驟
- Fiddler/Charles 抓包對比 HTTP/HTTPS 請求頭、體差異。
- 檢查服務端日志:是否進入 Controller、模型綁定是否報錯。
- 瀏覽器開發者工具 Console/Network 面板查看具體錯誤信息。
- 更換網絡庫驗證:如從 AFNetworking 遷移至 Alamofire(Swift)或 HttpClient (.NET)。
最佳回答
我知道怎麼不行了,可能是不在同一個域名內,還有一個是因為使用oc的第三方網絡庫有問題,我後來換成了Alamofire這個網絡庫,就可以了。之前使用的是OC下得AFNetworking