У меня есть простой веб-сервер python на основе cherrypy. Его ресурсы должны предоставлять API. Сервер имеет следующий код для предоставления CORS:
def CORS():
cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"
if __name__ == "__main__":
cherrypy.tools.CORS = cherrypy.Tool('before_finalize', CORS)
cherrypy.quickstart(PyCachedAdmin(), config={'/': {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}})
сервер работает на локальном хосте: 8080. Теперь у меня есть файл HTML, доступный на локальном хосте (порт 80 по умолчанию), который загружает jquery 1.9. Я открываю консоль браузера, чтобы попробовать $.ajax
выполнить любой запрос AJAX к серверу cherrypy. Я пытался:
$.ajax({
url:'http://localhost:8080/',
type: "POST",
dataType: "json",
data: {command:"version"}
}).done(function(){
console.log('hej');
});
и
$.ajax({
url:'http://localhost:8080/',
type: "POST",
crossDomain: true,
dataType: "jsonp",
data: {command:"version"}
}).done(function(){
console.log('hej');
});
и
$.support.cors = true
и ничего не работало. Я получаю XMLHttpRequest cannot load http://localhost:8080/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
или GET http://localhost:8080/?callback=jQuery19102827550224028528_1382823727186&command=version&_=1382823727187 404 (Not Found)
при использовании jsonp (загадочно, что он отправляет GET вместо POST). Есть несколько похожих вопросов, я попробовал их, и вот мои результаты (что-то все еще не так).
PS сервер в полном порядке, так как все тесты на завитки проходят. Что-то не так с междоменными вещами.
$.ajax({ url:'http://localhost:8080/', type: "POST", data: {command:"version"} }).done(function(){ console.log('hej'); });
, я получаю сообщение об ошибке:XMLHttpRequest cannot load http://localhost:8080/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
- person ducin   schedule 27.10.2013