Каковы самые большие различия между fopen и curl?


Я делаю веб-приложение на PHP и хочу читать контент из другого домена. Похоже, что мои основные варианты - fopen и curl.

Каковы основные различия между этими двумя методами, особенно в отношении безопасности и доступных вариантов?

Имеет ли значение, является ли url-адрес сайтом http или https?

2 12

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://.