内部服务器错误 - CSRF 令牌已过期 - wsgi 错误文件 csrf.py 第 110 行 csrf 验证 SyntaxError: invalid syntax
Posted
技术标签:
【中文标题】内部服务器错误 - CSRF 令牌已过期 - wsgi 错误文件 csrf.py 第 110 行 csrf 验证 SyntaxError: invalid syntax【英文标题】:Internal server error - CSRF token has expired - wsgi error file csrf.py line 110 csrf validation SyntaxError: invalid syntax 【发布时间】:2022-01-10 04:37:33 【问题描述】:在 Ubuntu 18.04 上使用 WSGI 和 Apache 服务器部署烧瓶应用程序的问题
问题:
尝试从浏览器加载网页时显示内部服务器错误。 Wsgi 错误记录描述 flask_wtf csrf.py 文件的问题(无效语法)记录的 Wsgi 错误(捕获的图像)
wsgi error
我尝试了以前版本的 flask_wtf,因为 csrf.py 中关于如何处理 csrf 令牌的验证错误的代码发生了更改。
结果:无论是最新版本还是过去版本,更改都没有产生任何影响。关于 csrf 令牌验证的同一段代码仍然显示语法错误。
Flask/WTF 版本:
Flask 2.0.2, 烧瓶-WTF 1.0.0, WTForm 3.0.0
Python 版本 3.6.9,Flask WTF 应该支持 > 3.6
不确定这是软件包的错误还是我做错了什么
烧瓶摘录:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Email
from flask import Flask, render_template, request
from DB_Insertdata import add_data
import datetime
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config.update(
SECRET_KEY="Secret_key",
WTF_CSRF_SECRET_KEY="a csrf secret key"
)
csrf = CSRFProtect()
csrf.init_app(app)
html 摘录:
<div id="Form">
<form action='/' method='POST' autocomplete="off">
<!-- form.csrf_token -->
<input type="hidden" name="csrf_token" value=" csrf_token() ">
<div id="name">
<div id="name_label"> form.entered_name.label </div> form.entered_name() </div>
<div id="email">
<div id="email_label"> form.entered_email.label </div> form.entered_email() </div>
<div id="submitbtn"> form.submit </div>
</form>
Apache 配置文件
<VirtualHost *:80>
ServerName wordr.com
WSGIDaemonProcess flaskapp user=www-data group=www-data threads=5
WSGIScriptAlias / /var/www/wordr/wordr.wsgi
<Directory /var/www/wordr>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %GLOBAL
Order deny,allow
Allow from all
</Directory>
Alias /static /var/www/wordr/static
<Directory /var/www/wordr/static/>
Order deny,allow
Allow from all
</Directory>
ErrorLog /var/www/wordr/logs/error.log
CustomLog /var/www/wordr/logs/access.log combined
</VirtualHost>
【问题讨论】:
请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。 【参考方案1】:解决方案: 升级了 mod_wsgi,脚本可以运行了。 apt-get install libapache2-mod-wsgi-py3
问题: Python 3.6.9 在我的系统路径中,但由于配置了 mod_wsgi/4.5.17 Python/2.7,所以使用了 mod_wsgi 版本 Python2.7。
注意:Flask-WTF 15.0 及更高版本对 Python 3.6 之前的任何版本的支持已被删除。
【讨论】:
以上是关于内部服务器错误 - CSRF 令牌已过期 - wsgi 错误文件 csrf.py 第 110 行 csrf 验证 SyntaxError: invalid syntax的主要内容,如果未能解决你的问题,请参考以下文章
在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常