我尝试通过 Curl 访问 JSON 文件,但它总是显示 403 禁止错误。
我在我的网站上使用 Cloudflare。
这是代码,只有 else 块正在运行。
我可以通过
browser and FTP
访问此JSON,没有错误,但通过Curl and wget
它显示403
。
$url = "https://example.com/pub/media/sample.json";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: curl/7.39.0');
$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code == 200) {
$status = true;
} else {
$status = false;
}
curl_close($ch);
if ($status){
echo 'sucess';
}
else{
echo $code.' My File Error '. $url;
}
如果您使用 cURL 访问 JSON 文件并收到 403 Forbidden 错误,则可能是因为服务器阻止来自 cURL 的请求。这里有一些要点供您研究和尝试。
User-Agent 标头:验证 User-Agent 标头的设置是否正确。包含可疑 User-Agent 标头或不提供 User-Agent 标头的请求有时会被服务器(包括 Cloudflare)阻止。从代码中的 CURLOPT_USERAGENT 选项中删除“User-Agent:”前缀:
curl_setopt($ch, CURLOPT_USERAGENT, 'curl/7.39.0');
Cookie 和标头:如果没有某些 Cookie 或标头,某些网站可能不允许访问。 Curl 可用于尝试复制浏览器标头。举个例子
curl_setopt($ch, CURLOPT_HTTPHEADER, 数组( '用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/58.0.3029.110 Safari/537.3', '接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/appng,/;q=0.8', '接受语言:en-US,en;q=0.9', )); 注意:根据您的浏览器发送的内容,修改标头。
验证 Cloudflare 安全首选项、Cloudflare 速率限制和访问限制。
点击此链接:https://copyprogramming.com/howto/curl-gives-403-error