Tôi tự gọi mình là một nhà phát triển PHP có kinh nghiệm, nhưng điều này khiến tôi phát điên. Tôi đang cố gắng để có được thông tin phát hành của một kho lưu trữ để hiển thị cảnh báo cập nhật, nhưng tôi tiếp tục trả lại 403 lỗi. Để đơn giản hóa nó, tôi đã sử dụng API GitHubs đơn giản nhất: GET https://api.github.com/zen. Đó là một loại thế giới hello.file_get_contents() nhận 403 từ api.github.com everytime
này hoạt động
- trực tiếp trong trình duyệt
- với một đồng bằng
curl https://api.github.com/zen
trong một thiết bị đầu cuối - với PHP-Github-API-Class như php-github-api
Đây không phải làm việc
- với một đơn giản
file_get_contents()
từ PHP-skript
Đây là toàn bộ mã đơn giản của tôi:
<?php
$content = file_get_contents("https://api.github.com/zen");
var_dump($content);
?>
Trình duyệt cho thấy Warning: file_get_contents(https://api.github.com/zen): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
, biến $content
là một boolean và false
.
Tôi đoán tôi đang thiếu một số loại http-header-lĩnh vực, nhưng tôi không thể tìm thấy những thông tin trong API-Docs, cũng không sử dụng thiết bị đầu cuối của tôi curl
-call bất kỳ tập tin tiêu đề đặc biệt và các công trình.
Bạn có bất kỳ gợi ý nào không? Cảm ơn trước!
Bạn hãy thử sử dụng [Fiddler] (http://www.telerik.com/fiddler) để so sánh các cuộc gọi khác nhau? –
Bật 'allow_url_fopen'? – Pitchinnate
'allow_url_fopen' được bật. Cảm ơn @RickS cho đề xuất công cụ, tôi sẽ bao gồm điều đó trong luồng công việc tương lai của mình. Giải pháp là một trường tiêu đề bị thiếu, như tôi đã đoán. Xem câu trả lời được đánh dấu. –