AJAX против CURL - PullRequest
       10

AJAX против CURL

9 голосов
/ 23 января 2011

Мне нужно знать разницу между CURL (в PHP) и AJAX (в Javascript), когда нужно узнать Источник запроса.

ОБНОВЛЕНО: Что я хочу знатьесли я генерирую запросы с использованием AJAX, какой IP-адрес отправителя будет получен на стороне сервера с пакетом в качестве источника?То же самое с CURL, и для всех пользователей будет отправлен один IP-адрес.Но так ли это с JS?JS выполняется на стороне клиента, так будет ли это IP-адрес клиента?

Ответы [ 3 ]

21 голосов
/ 23 января 2011

cURL - это процесс на стороне сервера. Это означает, что он будет вызван до отображения страницы и не имеет отношения к возможностям клиента.

AJAX, однако, является вызовом на стороне клиента. это означает, что он не будет выполнен до тех пор, пока клиент не загрузит страницу (или, по крайней мере, этот фрагмент кода не будет просмотрен и выполнен, но обычно это происходит в document.ready).

Если вы хотите получить информацию и немедленно отправить ее пользователю, тогда cURL - ваш лучший выбор. Если вы хотите выполнить прогрессивную загрузку (сбросить страницу, а затем извлечь контент для «плавной» загрузки для пользователя), тогда AJAX - лучший выбор. Имейте в виду, что, хотя в наши дни это тривиально, AJAX может быть отключен в случае расширения NoScript в FireFox.

При этом источник выполнения cURL будет на сервере. Источник запроса AJAX будет для каждого клиента. Ни один из них не обеспечивает безопасное средство обнаружения (на стороне сервера), чтобы узнать, кто что отправил (поскольку заголовки могут быть изменены).

0 голосов
/ 23 января 2011

IP-адрес, который запросил файл javascript с сервера, будет таким же, как IP-адрес, который отправил запрос ajax на сервер из этого файла.См. такую ​​же политику происхождения .

0 голосов
/ 23 января 2011

Если вы пытаетесь определить, какой метод использовался в качестве источника запроса, узнать наверняка невозможно. Большинство браузеров используют HTTP-заголовок X-Requested-With при отправке запроса через AJAX. Библиотека cURL отправляет пользовательский агент по умолчанию, но, очевидно, это может быть изменено библиотекой. Оба метода могут быть легко подделаны и не должны использоваться для строгой проверки.

Edit:

Запрос AJAX будет исходить от клиента, который сделал запрос AJAX. Запрос cURL будет исходить из того места, где использовалась библиотека. (например, если вы используете PHP, он поступит с сервера PHP. Если вы используете его через CLI, он будет получен с сервера, с которого вы выполнили команду)

Очевидно, что запросы могут быть за прокси и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...