缺少FlaskCSRF令牌

2024-09-27 21:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在flask wtf(v.0.14.2,python3.4.6)here的文档之后,当我从一个简单的单选按钮对一个onchange事件做出反应时,我得到了一个CSRF token is missing400错误。在

<script type="text/javascript">
// Send the status of the radio buttons using AJAX
function radio_changed(){
  var csrf_token = "{{ csrf_token() }}";

    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrf_token);
            }
        }
    });
    var radioValue = $("input[class=radios]:checked").val();
   //alert(radioValue);
   $.ajax({
                    url: '/_radio_update',
                    data: {value:radioValue},
                    type: 'POST',
                    success: function(response){
                            console.log(response);
                    },
                    error: function(error){
                            console.log(error);
                    }
            });
}
</script>

后来呢

^{pr2}$

在烧瓶侧:

...
from flask_wtf.csrf import CSRFProtect

app = Flask(__name__)
app.secret_key = 'shhhhhhh!'
csrf = CSRFProtect(app)

@app.route('/_radio_update', methods=['GET', 'POST'])
def _radio_update(radiostatus):
    print(radiostatus)
...

我错过什么了吗?在


Tags: thetokenappflaskvartypescriptupdate
1条回答
网友
1楼 · 发布于 2024-09-27 21:28:16

wtforms导入的Forms与从{}导入的Forms之间似乎有区别,根据{a1}末尾的注释,这导致了问题。在

在处理了弃用通知后,我终于改了行:

from wtforms import Form, RadioField, SubmitField, validators
class InputForm(Form):
...

^{pr2}$

这就解决了我的问题。在

相关问题 更多 >

    热门问题