为什么我有时会遇到这个错误?
**Bad Request**
Your browser sent a request that this server could not understand.
Apache Server at control.digitalcoding.com Port 80
何时
$UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11";
一切正常,但不是
Opera / 7.52(Windows NT 5.1; U)[en] Mozilla / 5.0(Windows; U; Windows NT 5.1; rv:1.7.3)Gecko / 20041001 Firefox / 0.10.1 Mozilla / 5.0(Windows NT 6.1; rv:10.0.1)Gecko / 20100101 Firefox / 10.0.1
例如,。有什么问题?
HtmlReciever.php
<?php
if(empty($_GET["Link"]))
{
echo "empty";
die;
}
$LinkToFetch = urldecode($_GET["Link"]);
$UserAgent = urldecode($_GET["UserAgent"]);
function iscurlinstalled()
{
if (in_array ('curl', get_loaded_extensions()))
{
return true;
}
else
{
return false;
}
}
// If curl is instaled
if(iscurlinstalled()==true)
{
$ch = curl_init($LinkToFetch);
curl_setopt($ch, CURLOPT_USERAGENT,$UserAgent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$HtmlCode = curl_exec($ch);
curl_close($ch);
}
else
{
$HtmlCode = file_get_contents($LinkToFetch);
}
echo $HtmlCode;
?>
我必须说我正在运行另一个.php的RecieverHtml.php和GET这样
答案 0 :(得分:2)
这取决于您的请求发送到的服务器。如果服务器检查用户代理并且仅允许与通用浏览器用户代理的有限/不完整/过时列表匹配的请求,则服务器可能返回通用400状态代码。
如果您无法控制服务器并希望脚本正常工作,请使用有效的用户代理并忘记其他用户代理。无论如何,您提供请求的用户代理是“错误的”,因为Chrome不是执行实际请求,而是您的服务器运行PHP脚本。
编辑: 您还可以使用以下代码传递请求PHP脚本的浏览器的用户代理:
curl_setopt($ch, CURLOPT_USERAGENT, $_REQUEST['HTTP_USER_AGENT']);
请记住,该值可能为空或异国情调(例如.Lynx / 2.8.8dev.3 libwww-FM / 2.14 SSL-MM / 1.4.1),并被服务器拒绝。