PHP cURL模拟浏览器AJAX请求始终返回400 Bad Request的排查求助
PHP cURL模拟浏览器AJAX请求始终返回400 Bad Request的排查求助
各位大佬好,我最近卡在一个cURL模拟请求的问题上,想请教下大家:
我想用PHP的cURL复现浏览器里的AJAX请求,但服务器每次都返回HTTP 400 Bad Request,可直接在浏览器里操作(通过DevTools的Network面板能看到请求完全正常)却一点问题都没有,真的搞不懂哪里出了岔子。
先贴我当前的代码:
$headers = [ "Accept : application/json, text/javascript, */*; q=0.01", "Content-Type : application/json", "X-Requested-With : XMLHttpRequest", ]; $data = [ "param1" => "value1", "param2" => "value2" ]; $ch = curl_init('https://example.com/api/report.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo $httpCode;
我已经尝试过这些方法,但都没解决问题:
- 将POST数据转成JSON格式后再发送
- 反复调整请求头,尽量和浏览器里的完全匹配
- 带上之前请求获取到的Cookie
想请教大家:我到底漏掉了什么关键细节?怎么才能让我的cURL请求和浏览器的AJAX请求表现完全一致,让服务器不再返回400?




