Forms Symfony2.1:CSRF令牌无效。只有在浏览器中,PHPUnit WebTestCase才能正常工作
我如何调试为什么在我所有的浏览器中,CSRF令牌都是无效的,但当我用Functional test测试同一个表单时,它是有效的 如果自定义表单呈现输入的方式,请检查是否添加了{{form_rest(form)},如下一个示例所示。 范例Forms Symfony2.1:CSRF令牌无效。只有在浏览器中,PHPUnit WebTestCase才能正常工作,forms,symfony,phpunit,csrf,csrf-protection,Forms,Symfony,Phpunit,Csrf,Csrf Protection,我如何调试为什么在我所有的浏览器中,CSRF令牌都是无效的,但当我用Functional test测试同一个表单时,它是有效的 如果自定义表单呈现输入的方式,请检查是否添加了{{form_rest(form)},如下一个示例所示。 范例 <form action="{{ path('BloggerBlogBundle_contact') }}" method="post" {{ form_enctype(form) }}> {{ form_errors(form) }}
<form action="{{ path('BloggerBlogBundle_contact') }}" method="post" {{ form_enctype(form) }}>
{{ form_errors(form) }}
{{ form_row(form.name) }}
{{ form_row(form.email) }}
{{ form_row(form.subject) }}
{{ form_row(form.body) }}
{{ form_rest(form) }}
<input type="submit" value="Submit" />
</form>
{{form_errors(form)}}
{{form_row(form.name)}}
{{form_row(form.email)}
{{form_row(form.subject)}
{{form_row(form.body)}
{{form_rest(form)}
当我在下面评论我的config.yml时,一切都开始工作了?所以新的问题是:这个配置的注释部分有什么问题
session:
auto_start: true
# cookie_lifetime: 86400
# cookie_path: \
# cookie_domain: example.com
# cookie_secure: true
# cookie_httponly: true
您可以使用@csrf\u employ decorator来豁免您必须导入的csrf令牌 从django.views.decorators.csrf导入csrf_豁免 然后在视图前写@csrf_
这将正常工作:)对于我来说,禁用安全cookie在从symfony 2.0.16升级到2.1.6后解决了此问题:
session:
cookie_lifetime: 3600
cookie_path: \
cookie_domain: .%base_domain%
cookie_secure: false
cookie_httponly: true
我在模板中只得到了{{form_widget(form)}}。标记在html源代码中可见此问题与Symfony2有关,而不是Python或Django。