Я пытаюсь создать простой Restful API с Bottlepy и создать клиент с AngularJS.Что я делаю неправильно с bottlepy + AngularJS + HTTP POST-запрос
Моя проблема заключается в том, что когда я отправить форму с углового клиентом, пост будет идти корыто, и все будет сделано, но результат все равно падает .error функции (данные) в Js стороны, потому что:
XMLHttpRequest не может загрузить http://localhost:8080/category/new. Нет Заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе . Origin 'http://localhost:8081' поэтому не разрешено доступ.
Вот мой код Python API:
@route('/category/new', method=['OPTIONS', 'POST'])
def new_category():
print request.forms.keys()
if "name" in request.forms:
name = request.forms.get('name')
_name = db.query(Category).filter_by(name=name).first()
if _name:
return HTTPResponse(status=409)
c = Category(name)
print name
if not c.validate():
try:
db.add(c)
db.commit()
return HTTPResponse(status=200)
except Exception as err:
traceback.print_exc()
return HTTPResponse(status=500)
return HTTPResponse(status=406)
return HTTPResponse(status=400)
У меня также есть CORS включен так:
@hook('after_request')
def enable_cors():
print "Tried to enable cors"
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PUT'
response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept'
А вот мой angularjs служба:
function addCategory(categoryName){
var payload = $.param({name: categoryName});
return $http({
method: 'POST',
url: apiBaseUrl+'category/new',
data: payload,
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.success(function(data){
return data;
})
.error(function(data){
alert("Something went wrong");
return data;
});
}
Любая идея, почему я получаю ошибку Access-ControlAllow-Origin?
В API протоколировать все, кажется, идет просто отлично:
['name']
fourth
Tried to enable cors
10.0.2.2 - - [03/Aug/2015 10:44:02] "POST /category/new HTTP/1.1" 200 0
Можете ли вы добавить дамп HTTP-пакета, полученного в браузере? – seanhodges