Symfony CSRF令牌无效

Symfony CSRF令牌无效,symfony,doctrine-orm,twig,fosuserbundle,Symfony,Doctrine Orm,Twig,Fosuserbundle,我的项目在本地计算机上运行良好。但是,一旦我把它上传到OVH服务器上,我在提交任何表格时都会遇到一些问题(比如注册FOSUserBundle以及我自己的表格) 问题是当我提交表单时,我有一个无效的CSRF令牌 我尝试了许多解决方案: 我将{{form_rest(form)}}添加到我的小树枝文件中 我在app/config/config.yml中将csrf\u protection更改为false,然后提交请求,表单中没有任何字段 注意:我尝试使用symfony 2.4和2.3,但问题仍然存

我的项目在本地计算机上运行良好。但是,一旦我把它上传到OVH服务器上,我在提交任何表格时都会遇到一些问题(比如注册
FOSUserBundle
以及我自己的表格)

问题是当我提交表单时,我有一个无效的CSRF令牌

我尝试了许多解决方案:

  • 我将
    {{form_rest(form)}}
    添加到我的小树枝文件中

  • 我在
    app/config/config.yml
    中将
    csrf\u protection
    更改为
    false
    ,然后提交请求,表单中没有任何字段

注意:我尝试使用symfony 2.4和2.3,但问题仍然存在

我的树枝:

<form id="modifier_form" name="modifier_form" method="post" {{ form_enctype(form) }}>
    <div id="form_prenom">{{ form_row(form.prenom) }}</div>
    <div id="form_nom">{{ form_row(form.nom) }}</div>

    <div id="form_situation_pro">
        <label>Situation professionnelle</label>
        <select name="optone" 
                id="pays_select"
                onchange="setOptions(document.modifier_form.optone.options[document.modifier_form.optone.selectedIndex].value);">
                    <option value=" " selected="selected"> </option>
                    {% for a in pays  %}
                        <option value="{{ a.getId }}">{{ a.getName }}</option>
                    {% endfor %}
        </select>
    </div>
    <div id="form_situation_pro_sous">
        <label></label>
        <select name="opttwo" id="region_select">
            <option value=" " selected="selected"></option>
        </select>
    </div>

    {{ form_widget(form) }}
    {{ form_restt(form) }}
    <input type="submit" value="Enregistrer" />
My config.yml

framework:
#esi:             ~
translator:      { fallback: "%locale%" }
secret:          "%secret%"
router:
    resource: "%kernel.root_dir%/config/routing.yml"
    strict_requirements: ~
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
templating:
    engines: ['twig']
    #assets_version: SomeVersionScheme
default_locale:  "%locale%"
trusted_hosts:   ~
trusted_proxies: ~
session:
    # handler_id set to null will use default session handler from php.ini
    handler_id:  ~
fragments:       ~
http_method_override: true

如果使用symfony 2.3,请设置窗体结束

{{ form_end(form, {'render_rest': false}) }}
你写的

{{form_restt(form)}

应该是这样的:

{{form_rest(form)}

并删除
{{form_widget(form)}
。它用于渲染窗体的一部分。因为您已经呈现了一个字段
form.prenom
。form_rest将渲染其余字段


快乐编码…

你可以简单地让树枝使用{{form(form)}为你呈现它一旦开始使用小部件、行和标签,你就必须使用{form_start(form)}在提交按钮之后和{form_end(form)}之前,你应该把{{form u rest(form)}


我认为您缺少form_end并更正了form_rest,因为它有一个拼写错误

我想提醒您,它在本地(dev和prod模式)上运行良好。@Yakiv Mospan,它是一个细枝代码,而不是java。是{…}你能发布一些PHP、twig和相应的Generated HTML吗?对不起,我在复制{{form_Rest(form)}时犯了一个错误。我也删除了{{form_widget(form)}},但仍然没有任何更改。你可以尝试更新表单类型的setDefaultOptions函数,如,并让我知道结果吗?我已经尝试过并再次重试了。结果是,表单将以空值呈现,并且它将以空值更新我的数据库。这将禁用csrf验证!现在您可以更改
$form->bindRequest($request)
$form->handleRequest($request)现在当我提交时,表单被重置(重定向不起作用),有或没有“csrf_保护”=>false
{{ form_end(form, {'render_rest': false}) }}