Я пытаюсь опубликовать события в маленьком приложении CherryPy, которое отвечает на GET/POST, но при попытке с помощью AngularJS это просто не отправляет вещь.AngularJS http.post с cherrypy
Теперь я не знаю, связано ли это с AngularJS или с CherryPy (CP), кросс-домен включен в CP, но он просто не может получить метод POST. Однако это работает с CURL
POST в СР определяется как:
def POST(self, date, description):
# read items to catch any server side update
events = {
"date": int(date.encode('ascii','ignore')),
"description": description.encode('ascii','ignore'),
"status":"Active"
}
# storing changes
save_events(events)
return ('Event created\n')
Заголовки включены по:
def enableCrossDomain():
cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"
cherrypy.response.headers["Access-Control-Allow-Methods"] = "GET, POST"
cherrypy.response.headers["Access-Control-Allow-Headers"] = "Cache-Control, X-Proxy-Authorization, X-Requested-With"
def OPTIONS(self):
enableCrossDomain()
return
И CURL вызов выглядит следующим образом:
curl -d $EPOCH_DATE -d $EVENT -X POST 'myurl.com:1234/api/events/'
Попробуйте это с помощью AngularJS:
var message = "'" + $scope.event_description + "' '" + $scope.datetime_start + "'";
console.log(message);
$scope.post_url = "myurl.com:1234/api/events";
$http.post($scope.post_url,message).success();
Уже пробовал отправить сообщение «сообщение» как JSON и указать его в заголовках, но просто не может заставить его работать. Любые идеи, что мне не хватает или что еще я должен здесь попробовать?
Может быть угловой проходит в некоторых параметры, которые не находятся в подписи обработчика? – hayavuk
Итак, вызов curl работает нормально, но вызов '$ http.post' не работает, верно? Если это так, я бы попытался захватить HTTP-трафик по сети и сравнить, если есть какие-либо существенные изменения. – hlovdal