Symfony:Access-Control-Allow-Origin(' security.token_storage)

时间:2017-10-31 14:00:16

标签: symfony fosuserbundle

我使用Symfony,我尝试从其他网站(ajax)获取用户ID。但它不起作用!

我的浏览器中出现此错误:

minutes_ago tran_count
0           2
1           3
2           10
3           15
4           4
5           9
6           12
7           6
8           13
9           4
10          2

我的代码是:

Access-Control-Allow-Origin

一旦我使用了用户的getter,就会出错。 如果我不使用吸气剂,则没有错误。 原始域没有问题。

好的,问题来自cookies。所以我添加了这些标题:

$response->headers->set('Access-Control-Allow-Origin', '*');
/* That does not works and returns : 'NOOOO !!!' but, no error */
if($this->get('security.authorization_checker')->isGranted('ROLE_USER'))
{
    $usertosend = $this->get('security.token_storage')->getToken()->getUser();
    $id = $usertosend->getId();
    $response->setData(array('user'=>$id));
}
else
{
    $response->setData(array('user'=>'NOOOO !!!'));
}
/* That works :*/ 
$usertosend = $this->get('security.token_storage')->getToken()->getUser();
/* That does not works and returns : Access-Control-Allow-Origin error*/
$id = $usertosend->getId();

我在我的ajax方法中添加了这个提及:

    $response->headers->set('Access-Control-Allow-Origin', 'http://localhost');
    $response->headers->set('Access-Control-Allow-Methods', 'get');
    $response->headers->set('Access-Control-Allow-Credentials', 'true');
    $response->headers->set('Access-Control-Allow-Headers', 'Content-Type, *');
xhrFields: {withCredentials: true},

我希望,它会帮助下一个用户。 谢谢你的帮助 :) 见到你

1 个答案:

答案 0 :(得分:0)

您可以在symfony项目中使用NelmioCorsBundle在应用程序的响应中添加标题CORS。

这是一个非常简单快速的安装。这是一个标准的bundle,用于构建一个symfony API Rest Application,它使用外部应用程序进行调用。

NelmioCorsBundle