IchFlask: CSRF Überprüfung fehlgeschlagen
-(void)loadFavorite:(NSArray*)favorites{
//data and url preparation
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"https://example.com" forHTTPHeaderField: @"Referer"];
[request setValue:[NSString stringWithFormat:@"%tu", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
if ([Tools isNetWorkConnectionAvailable]) {
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//response handle
}
}
Hier ist die Antwort eine POST-Anforderung von einem iOS-Client sendet:
<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>
Ich bin mit Flask Rahmen und pythonanywhere für das Hosting.
Es funktioniert einwandfrei, wenn ich das Python-Skript neu lade, aber nach einigen Stunden/Tagen wird der CSRF-Verifikationsfehler erneut angezeigt.
Auch wenn ich versuche, die CSRF Überprüfung in meinem app.py zu deaktivieren mit:
app.config['WTF_CSRF_CHECK_DEFAULT'] = False
App.py Skript:
//some import error handlers ...
app = Flask(__name__)
app.config['WTF_CSRF_CHECK_DEFAULT'] = False
@app.route('/api/favorites', methods=['POST'])
def get_favorites_beaches():
if not request.json or not 'favorite' in request.json:
abort(400)
//data process
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True)
Wie kann ich die CSRF Überprüfung korrekt implementieren oder wie man deaktiviere es?
Flask hat keinen integrierten CSRF-Schutz. Fügen Sie ihn mit Flask-WTF oder einer ähnlichen Erweiterung hinzu? – jonafato
Nein, und ich möchte es nicht verwenden, ich verstehe nicht, warum ich diesen Fehler erhalte. Ich verwende keine flask_wtf.csrf, CsrfProtect und ich nicht CsrfProtect (app) in app.py. –
Wenn es möglich ist, möchte ich es deaktivieren, aber ich weiß nicht warum app.config ['WTF_CSRF_CHECK_DEFAULT'] = Falsch funktioniert nicht in app.py. –