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/