RESTful API возвращает данные, когда запрос происходит из браузера или PHP, но не из JavaScript. Зачем? - PullRequest
0 голосов
/ 02 мая 2011

Я пытаюсь позвонить (частному) веб-сервису RESTful с помощью запроса GET, используя $ jQuery.get (). Но когда я получаю, я не получаю данные ответа (хотя я получаю код ответа 200 OK!).

Когда я делаю точно такой же вызов из PHP (file_get_contents ()) или просто вставляя URL-адрес GET в окно браузера, я получаю ответ (JSON) очень хорошо.

Используя Firebug, я не вижу абсолютно никакой разницы между заголовками запросов, которые я отправляю, когда делаю запрос из jQuery, и когда я вставляю URL в свой браузер. Единственное отличие состоит в том, что jQuery добавляет заголовки «Referer» и «Origin» - однако , я принудительно добавил эти два заголовка в мой прямой запрос браузера с помощью расширения ModifyHeaders в Firefox, и я все еще получаю данные обратно, поэтому сервис не может быть отфильтрован по Referer / Origin.

По сути, мне интересно, что, черт возьми, происходит, если я могу сделать два, казалось бы, идентичных запроса, но не получить ответа, когда он через jQuery. Есть ли какой-то «скрытый» заголовок или параметр, который я не вижу, который сервер может использовать, чтобы определить, что запрос был отправлен через JavaScript?

Мой код прост: $.get("http://example.com/json.php?q=sometext", function(response) { alert(response); });

Спасибо.

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Есть ли вероятность того, что вы нарушаете ту же политику происхождения , пытаясь отправить междоменные запросы AJAX? Если, не убедитесь, что сервер устанавливает правильный заголовок Content-Type на application/json, чтобы jQuery автоматически предоставлял вам готовый к использованию разобранный объект в обратном вызове успеха. Также попробуйте передать относительный URL в функцию $.get:

$.get("/json.php?q=sometext", function(response) { 
    alert(response); 
});
0 голосов
/ 02 мая 2011

Попробуйте это:

$.get("http://example.com/json.php?q=sometext", 
      function(response) { alert(response); },
      "json");

Обратите внимание на последний параметр.

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