Лучший подход, который я нашел, - дать вашему пользователю API_KEY и SECRET_KEY.
Создайте свой запрос API REST, передав API_KEY, отметку времени и любые другие параметры, необходимые для совершения вызова.
Используя язык сценариев, такой как PHP, создайте переменную API_SIGNATURE, используя двухстороннее шифрование с вашим SECRET_KEY, и добавьте это к своему базовому URL, и это то, что вы запускаете в качестве запроса.
Теперь любой может увидеть этот запрос, и поэтому вы указали временную метку в качестве параметра. По сути, вы можете установить ограничение, которое будет обрабатывать только запросы, которые не старше одной минуты.
Пример: (выполнить эту часть на языке сценариев)
$API_BASE_URL="http://api.yourdomain.com/1.1/comments.json?api_key=2002×tamp=2323234544&id=4";
$API_KEY=300;
$API_SIGNATURE=hash_hmac('sha256', API_BASE_URL, API_KEY);
$API_URL=$API_BASE_URL.'&api_signature='.$API_SIGNATURE;
-
Теперь в вашем jquery ajax url: выведите $ API_URL с помощью PHP.
-
В вашем API, когда вы получаете запрос, вы просматриваете учетную запись пользователя на основе API_KEY, получаете их SECRET_KEY, дешифруете подпись и убедитесь, что она соответствует тому, что было передано. Если это прошло, проверьте отметку времени и убедитесь, что запрос менее чем за минуту.
Вы также можете сделать ограничение скорости и множество других вещей перед обработкой запроса.
Вот так.
Также люди говорят, что браузеры не допускают кросс-доменные запросы. Это верно, если вы запрашиваете json, но вы можете обойти это, используя jsonp.
hash_hmac доступен на многих языках программирования и сценариев. Поэтому, если вы разрабатываете API, вы можете использовать его в Интернете с PHP и в своем приложении для iphone с целью c.
Довольно просто.