我有一个使用CodeIgniter 2构建的web应用程序,我在其中启用了CSRF保护。$config['csrf_protection'] = TRUE;
我的朋友正在为同样的应用程序创建移动应用程序,所以他需要API来与web应用程序通信。我使用本教程在CI中创建了RESTful API。移动应用程序发出的所有请求都是POST
请求。我面临的问题是,由于启用了CSRF保护,并且从移动设备发出的POST请求不携带任何"CSRF令牌",因此它正在抛出500 internal server error
。但是,如果我禁用CSRF保护,则一切正常。实施它的正确方法是什么?我应该在手机上生成代币吗?或者我应该为CSRF保护添加例外吗?如果是,那么我该怎么做呢?因为我不想禁用CSRF保护。
从net.tutsplus.com查看代码点火器中CSRF的实现
我希望这能解决你的问题。如果你正确地实现了,那么在config.php 中写下这个
if (isset($_SERVER["REQUEST_URI"]))
{
if(stripos($_SERVER["REQUEST_URI"],'/mypage') === FALSE)
{
$config['csrf_protection'] = TRUE;
}
else
{
$config['csrf_protection'] = FALSE;
}
}
else
{
$config['csrf_protection'] = TRUE;
}