0
我已经开始与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禁止响应:
<!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工具粘贴的响应
你如何设置Flask来防止CSRF?瓶,跆拳道?烧瓶SeaSurf?其他一些方法? –
@JakubP。 - flask_wtf – trex
假设1)您仔细阅读了所有http://flask-wtf.readthedocs.org/en/latest/csrf.html和2)AJAX调用实际上具有X-CSRFToken标头,其中具有适当的值在Flask模板中插入的HTML页面,以及3)您的flask_wtf配置没有从默认(http://flask-wtf.readthedocs.org/en/latest/config.html)更改,那么我没有线索...如果你可以把一个最小的工作演示放在一起,我可以尝试在我自己的机器上进行调试......(注意0.9.0版本的要求) –