Boris Hasikov: так-то сделать можно, и притом вариантов много.
Можно, чтобы сервак проверял наличие определенных headerов в запросе, и если нет (как при запросе из браузера), то облом. А AJAX эти хедеры отправлял.
Есть уже и готовое решение, в таких библиотеках, как jQuery - там при аяксе автоматом отправляется один такой заголовок (Requested With), специально для идентификации, откуда сделан запрос.
Только я не понимаю, чего вы этим добиться хотите. Любой спец возьмет сниффер Fiddler и подделает ваш AJAX. Если хотите копирастии, то брали бы хоть TCP (WebSockets) или RTMP какой-нибудь, да и то, реальный спец справится.
Метод пост для аякса, по урлу ничего не будет доступно если в конечном скрипте вы проверите метод вызова, и по методу гет просто сделаете exit(); По посту - обрабатываете пришедшие переменные и отдаете обратно ответ.