Каковы самые большие различия между fopen и curl?
Я делаю веб-приложение на PHP и хочу читать контент из другого домена.
Похоже, что мои основные варианты - fopen
и curl
.
Каковы основные различия между этими двумя методами, особенно в отношении безопасности и доступных вариантов?
Имеет ли значение, является ли url-адрес сайтом http или https?
2 ответа:
Curl использует внешнюю библиотеку и имеет гораздо больше возможностей для настройки запроса - пользовательские заголовки, генерация POST-запроса, загрузка файлов. Все, что вам нужно, я должен сказать.
Fopen ограничивается только запросом GET url-адреса без какой-либо дальнейшей настройки.
Что касается безопасности, то на CURL не влияет конфигурация безопасности в PHP (например, запрещенный fopen удаленных URL-адресов и тому подобное).
Обе возможности возвращают вам данные, которые вы можете использовать в каждом возможно, так, как вы хотите. Если вы делаете дыру в безопасности вашего проекта, после получения данных это ваша вина, в конце концов.
Также я не совсем уверен, но я думаю, что fopen не может обрабатывать SSL (https) соединения.и fopen, и CURL поддерживают SSL (как отметил Энди шеллам в комментарии ниже).
Смотрите Каковы важные различия между использованием fopen($url) и curl в PHP? для некоторых параметров безопасности, влияющих на fopen, а именно allow_url_include.
Кроме того, обратите внимание, что с помощью curl, если вы устанавливаете curlopt_followlocation, то curl следует перенаправляет в файл:// для извлечения данных (все еще подлежит open_basedir). Перенаправление на другие схемы, такие как ftp:// может быть хуже (не тестировал ftp://). Без том, что curl setopt не следовать перенаправлениям на всех. фопен, кажется, работает с 302 по умолчанию, но только http: / / - > http:// и Не http:// - > file://.