Я начал с python-flask
и angular
, и я использовал this snippet для обработки csrf. С вызовом ajax он всегда дает мне ошибку 403. Я не понимаю, что я здесь делаю неправильно. Я воспользовался многими ответами и попробовал все варианты, найденные в google search. Но не повезло. Я не понимаю, где я ошибаюсь.флакон и токен csrf
Колба Код:
@app.route('/targetapi/', methods=['POST'])
def fetch_targets():
""" """
data_dict = {}
acc_ids = request.args['acc_ids']
data_dict['username'] = session.get('username')
data_dict['targets'] = some_func(acc_ids)
return jsonify(data_dict)
Угловая код: HTML страницы:
<input name="_csrf_token" type=hidden ng-model="csrf_token" ng-init="csrf_token='{{ csrf_token() }}'" >
Ajax вызов:
$http({
method : "POST",
url : '/targetapi/',
headers : { xsrfHeaderName: 'X-CSRFToken', xsrfCookieName : csrf_token },
data : { acc_ids : accountIDs }
})
Не знаю, почему я получаю 403 Forbidden ответ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>403 Forbidden</title>
<h1>Forbidden</h1>
<p>You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.</p>
* ответ вставленный из Chrome-Developer Tool
Как вы устанавливаете флажок для защиты от CSRF? Колба-WTF? Колба-SeaSurf? Какой-то другой метод? –
@JakubP. - flask_wtf – trex
Предполагая, что 1) вы внимательно прочитали все http://flask-wtf.readthedocs.org/en/latest/csrf.html и 2), вызов AJAX на самом деле имеет заголовок X-CSRFToken с правильным значением из HTML-страница, вставленная в шаблон Flask, и 3) ваша конфигурация flask_wtf не изменена по умолчанию (http://flask-wtf.readthedocs.org/en/latest/config.html), тогда у меня нет подсказки ... if вы могли бы собрать минимальную рабочую демоверсию, которую я мог бы попробовать отлаживать на своей машине ... (обратите внимание на потребность в версии 0.9.0) –