gpt4 book ai didi

python - flask : CSRF verification failed

转载 作者:可可西里 更新时间:2023-11-01 03:59:04 28 4
gpt4 key购买 nike

我正在从 iOS 客户端发送 POST 请求

-(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
}
}

这是响应:

<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>

我正在使用 Flask 框架和 pythonanywhere 进行托管。

当我重新加载 python 脚本时它工作正常,但在几个小时/几天后,CSRF 验证失败错误再次出现。

即使我尝试在我的 app.py 中禁用 CSRF 验证:

app.config['WTF_CSRF_CHECK_DEFAULT'] = False

App.py 脚本:

//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)

如何正确实现 CSRF 验证或如何禁用它?

最佳答案

这里是 PythonAnywhere 开发人员,正在重新发布我们刚刚发布在论坛上的内容。在我们的托管平台上,这是一个相当隐蔽的问题,我们刚刚推出了一个系统补丁来修复它。

事情是这样的:如果网络应用程序由于某种原因(系统重启、某些类型的故障、资源使用过多,可能是休眠)而关闭,则只有 GET 请求才能将其唤醒。特别是 POST 请求会因 CSRF 错误而被拒绝(由我们用于启动网络应用程序的代码生成),并且该应用程序不会被唤醒。因此,如果您的应用主要处理 POST 请求,您就会看到这个问题。这绝对符合您描述的问题。

我们的新代码会在收到 POST 时唤醒应用。仍然存在一个小问题——唤醒它的第一个 POST 请求将收到“503 服务不可用”响应,其中“重试” header 设置为“5”。如果您处理此问题并重试,那么下一个请求将起作用。我们相信浏览器会自动执行此操作,但遗憾的是请求库默认情况下不会执行此操作。

关于python - flask : CSRF verification failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31032656/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com