У меня есть экземпляр Apache 2.2.21 в Windows 7, работающий на http://localhost
, который использует mod_rewrite для перенаправления запросов, начинающихся с /backend
до http://localhost:8080
.Сервер на http://localhost:8080
, в свою очередь, является сервером CherryPy 3.2.0, который предназначен для приема сообщений JSON POSTed и ответа на них сообщениями JSON.
Моя проблема заключается в том, что когда я пытаюсь выполнить POST для http://localhost/backend
с использованием AJAXСервер CherryPy в конечном итоге видит сообщение без заголовков запроса и без прикрепленных данных JSON.Таким образом, он возвращает ошибку 400 BAD REQUEST.Но у меня также есть приложения, встроенные в Excel и .NET, которые отправляют подобные сообщения на http://localhost/backend
без проблем.Кроме того, я попытался настроить страницу на http://localhost/route
(которая использует Django), которая передает AJAX POST на http://localhost:8080
;это прекрасно работает.
Мой вопрос, почему AJAX POST к `http://localhost/backend' не работает.Возможно, это связано с безопасностью AJAX?
Пример JavaScript с использованием jQuery будет выглядеть примерно так:
$.post(
"/backend",
JSON.stringify({"type": "getdata", "id": "1"}),
function(data) {
alert("Done");
}
);
А соответствующий раздел файла конфигурации Apache -
RewriteEngine on
RewriteRule ^/backend http://localhost:8080 [proxy]
CherryPy работает без специальных параметров запуска:
cherrypy.config.update({'server.socket_port': 8080})
cherrypy.quickstart(MyServer())