Dojo XHR вообще не отправляет запрос на другой сервер, но все работает в jQuery

У меня есть среда разработки, состоящая из HTTP-сервера Apache для быстрой разработки Javascript и сервера приложений (WebSphere), который предоставляет JSON REST API. Конечно, Access-Control-Allow-Origin установлено (на *).

Следующий код приводит к ошибке:

 xhr.post({
  url: "http://localhost:8080/rest-sample/rest/test/list",
  handleAs: "json",
  load: onload
 });

 RequestError: Unable to load
 http://localhost:8080/rest-sample/rest/test/list status: 0
 ErrorCtor()create.js (Zeile 13) onError()xhr.js (Zeile 80)     

 var err = Error.call(this, message),

Вместо отправки AJAX-запроса выдается ошибка JavaScript. Тем не менее, в то же время, идеально подходит следующая функция jQuery:

    var url = "http://localhost:8080/rest-sample/rest/test/list"
    $.post(url, {}, onLoad, 'json')

У меня вопрос: что я делаю не так? Как отправить запрос AJAX на другой сервер с помощью Dojo?

Я использую додзё 1,9

2 ответа

Решение

Ваш сервер также должен отправить Access-Control-Allow-Headers: x-requested-with,

Я думаю, что xhr.post больше не поддерживается, я предлагаю использовать dojo/request или, по крайней мере, dojo/request/xhr

require(["dojo/request/xhr"], function(xhr){
  xhr("http://localhost/rest-sample/rest/test/list", {
    handleAs: "json",
    method: "POST"
  }).then(function(data){
    // Do something with the handled data
  }, function(err){
    // Handle the error condition
  }, function(evt){
    // Handle a progress event from the request if the
    // browser supports XHR2
  });
});

Если это проблема перекрестного происхождения, я бы предложил использовать ReverseProxy на вашем http-сервере.

добавьте это в ваш httpd.conf

ProxyPass /rest-sample/ http://localhost:8080/rest-sample/
Другие вопросы по тегам