如何从Symfony生成的页面向Symfony表单发送数据

时间:2015-09-05 20:46:26

标签: symfony

我使用Symfony 2构建的应用程序有一条路线/getStarted

此路线呈现只包含一个字段的表单:电子邮件。

用户输入电子邮件后,该应用会注册一个帐户。

我的应用已托管,例如http://www.example.COM

现在,我已经为应用设置了网站(使用CMS构建),但地址为http://www.example.NET

所以,我想在http://www.example.NET(CMS)上设置一个指向http://www.example.COM/getStarted(即Symfony)的表单。

问题是在Symfony中我使用CSRF,所以我不能简单地将表单的代码放在Wordpress中,因为我没有新的CSRF代码。

是否有任何可能的方法将数据从http://www.example.net(一个简单的html页面)发送到http://www.example.com/getStarted维护csrf?

也许创建另一个action,就像API一样?但是如何?

同样适用于登录表单,我希望在两个站点上都有.net和.com。

2 个答案:

答案 0 :(得分:1)

如果表单没有处理任何敏感信息(根据用户凭据等情况),您可以在该单个表单上禁用CSRF。否则,您可以将Symfony表单嵌入到Wordpress站点的iFrame中 - 这样它将保留它的CSRF令牌。

答案 1 :(得分:0)

要禁用CSRF,您必须在FormType-> setDefaultOptions()中禁用CSRF。 你添加'csrf_protection'=>假

$resolver->setDefaults(array(
        'data_class' => 'Acme\BackOfficeBundle\Entity\Registration',
        'csrf_protection'   => false
    ));

对于CORS,您有很多解决方案可以做到这一点。 symfony上存在一个很好的解决方案,它是NelmioCorsBundle。我不确定您的应用程序的代码,但尝试将其添加到config.yml

nelmio_cors:
paths:
    '^/getStarted':
        allow_credentials: true
        allow_origin: ['http://www.example.net']
        allow_headers: ['*']
        allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
        max_age: 3600