【发布时间】:2012-03-04 23:00:46
【问题描述】:
我正在使用以下脚本发出 cURL 发布请求,该脚本发布到表单处理脚本:
$url = "http://www.example.com/process_script.php";
$referer = "http://www.example.com";
$agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11";
$postdata = array('message' => 'Hello, World!', 'name' => 'Bob');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_exec($ch);
它在某些 url 上运行良好。此外,当我将它发布到我的测试脚本(它只输出引用者、代理和 postdata)时,它工作得很好。
然而,有些服务器却给了我这个奇怪的“服务器无法理解您的查询”错误。这不是 403,因为当我删除用户代理选项时,我确实得到了 403。用户代理字符串有问题吗?它是直接从我的实际浏览器中提取的。
我需要设置更多选项来模拟真实浏览器吗?
【问题讨论】:
-
如果您确实按原样引用了该消息,则为服务器内部错误。我建议先检查您的参数:也许它们应该以大写或其他形式命名。 )