Profile

User profile and story timeline

user-img
nyg

CSRF令牌在日历事件中添加 中的问题解决,更改文件:日历模版、main下的view.py、主目录的config.py

view.py

from functools import wraps
def csrf_protect_ajax(f):
@wraps(f)
def decorated_function(*args, **kwargs):
try:
# 从请求头获取CSRF令牌
csrf_token = request.headers.get('X-CSRFToken')
if not csrf_token:
abort(400, 'CSRF token missing')
validate_csrf(csrf_token)
except Exception as e:
abort(400, f'Invalid CSRF token: {str(e)}')
return f(*args, **kwargs)
return decorated_function

config.py

# 安全配置
WTF_CSRF_ENABLED = True  # 启用CSRF保护
WTF_CSRF_HEADER_NAME = 'X-CSRFToken'  # 从这个请求头获取CSRF令牌
WTF_CSRF_CHECK_DEFAULT = False  # 禁用默认的CSRF检查(我们将手动处理)

extra-calendar.html
{{ super() }}


{% endblock %}
...
$.ajax({
url: '/add_event', // 假设这是您的后端 API 路由
type: 'POST',
headers: {
'X-CSRFToken': $('meta[name="csrf-token"]').attr('content') // 添加令牌
}
...
$.ajax({
url: '/update_event',
type: 'POST',
headers: {
'X-CSRFToken': $('meta[name="csrf-token"]').attr('content') // 添加令牌
},

回复