如何解决如何动态呈现CSRF令牌?
我正在玩一些Flask-SQLAlchemy
代码。
我做了一个简单的模型来保存页面内容
class Page(db.Model):
__tablename__ = 'page'
id = db.Column(db.Integer,primary_key=True)
content = db.Column(db.String)
当动态内容更改时,页面实际上将自身保存在数据库中。
@page_blueprint.route('/page',methods=["GET","POST"])
def get_page():
from models import Page
page = Page.query.first() or None
if request.method == "GET": # If we are accessing the page
return render_template('page.html',page=page)
if request.method == "POST": # We are getting the data
import json
if page:
page.content = request.get_json()['page']
db.session.commit()
if not page:
print(request.get_json())
page = Page(content=request.get_json()['page'])
db.session.add(page)
db.session.commit()
return json.dumps({"ok": 200});
没有问题。
我的问题出在我的HTML文件中: 简化,看起来像这样。
{% if page %}
{{ page.content | safe }}
{% else %}
Render the regular page
** <script>
let token = {{ csrf_token() }};
</script>
{% endif %}
然后是页面更改后的问题。看来|安全标签会删除csrf_token,因此我认为这是有充分理由的。然后,任何POST请求都会因缺少CSRF令牌而失败。我尝试了没有安全标签的情况,但页面上只有一堆HTML文本。 我不确定如何处理此问题。 有人有什么建议吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。