Python Flask 400 Bad Request Error Every Request
Python Flask 400 Bad Request Error Every Request
我正在开发一个 Flask 应用程序,最近将它转换为一个只有一个应用程序的简单蓝图模板。它在调试模式下工作正常 (FLASK_DEBUG=1),但当它不在调试模式下时,无论我尝试点击哪个页面,我都会得到“HTTPStatus.BAD_REQUEST - 代码 400”。它会自动点击 https://127.0.0.1:5000, so I've tried doing http://127.0.0.1:5000 但这也不起作用,因为它似乎重定向回 https。
application.py
from app import create_app
application = app = create_app()
if __name__ == "__main__":
application.run()
routes.py(为简洁起见仅包括索引路由并省略导入)
app_blueprint = Blueprint('app_blueprint', __name__, template_folder='app/templates', static_folder='static')
@app_blueprint.route('/')
@app_blueprint.route('/index')
def index():
return render_template('app_blueprint/index.html', title='Home')
init.py 来自应用程序。我的 csp 乱七八糟,因为我正在四处游玩,看看这是否导致了问题。
migrate = Migrate()
login = LoginManager()
login.login_view = 'login'
mail = Mail()
moment = Moment()
talisman = Talisman()
def create_app(config_class=Config):
application = Flask(__name__)
application.config.from_object(config_class)
from app.models import db
db.init_app(application)
migrate.init_app(application, db)
login.init_app(application)
mail.init_app(application)
moment.init_app(application)
from app.routes import app_blueprint
application.register_blueprint(app_blueprint)
csp = {
'default-src': [
'\'self\'',
'*.com',
'data:'
],
'script-src': [
'\'self\'',
'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js',
'https://code.jquery.com/jquery-3.5.1.min.js'
],
'img-src': [
'\'self\'',
'data:',
'*.com',
'*.net',
'*.org',
]
}
talisman.init_app(application, content_security_policy=csp, content_security_policy_nonce_in=['script-src'])
想通了。当 运行 talisman 时,它会强制所有内容都使用 HTTPS,除非它处于调试模式。
在 this article 上做第一件事最终让它开始工作。虽然,整篇文章提出了一种更明智的方法。
我正在开发一个 Flask 应用程序,最近将它转换为一个只有一个应用程序的简单蓝图模板。它在调试模式下工作正常 (FLASK_DEBUG=1),但当它不在调试模式下时,无论我尝试点击哪个页面,我都会得到“HTTPStatus.BAD_REQUEST - 代码 400”。它会自动点击 https://127.0.0.1:5000, so I've tried doing http://127.0.0.1:5000 但这也不起作用,因为它似乎重定向回 https。
application.py
from app import create_app
application = app = create_app()
if __name__ == "__main__":
application.run()
routes.py(为简洁起见仅包括索引路由并省略导入)
app_blueprint = Blueprint('app_blueprint', __name__, template_folder='app/templates', static_folder='static')
@app_blueprint.route('/')
@app_blueprint.route('/index')
def index():
return render_template('app_blueprint/index.html', title='Home')
init.py 来自应用程序。我的 csp 乱七八糟,因为我正在四处游玩,看看这是否导致了问题。
migrate = Migrate()
login = LoginManager()
login.login_view = 'login'
mail = Mail()
moment = Moment()
talisman = Talisman()
def create_app(config_class=Config):
application = Flask(__name__)
application.config.from_object(config_class)
from app.models import db
db.init_app(application)
migrate.init_app(application, db)
login.init_app(application)
mail.init_app(application)
moment.init_app(application)
from app.routes import app_blueprint
application.register_blueprint(app_blueprint)
csp = {
'default-src': [
'\'self\'',
'*.com',
'data:'
],
'script-src': [
'\'self\'',
'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js',
'https://code.jquery.com/jquery-3.5.1.min.js'
],
'img-src': [
'\'self\'',
'data:',
'*.com',
'*.net',
'*.org',
]
}
talisman.init_app(application, content_security_policy=csp, content_security_policy_nonce_in=['script-src'])
想通了。当 运行 talisman 时,它会强制所有内容都使用 HTTPS,除非它处于调试模式。
在 this article 上做第一件事最终让它开始工作。虽然,整篇文章提出了一种更明智的方法。