我的公司抓取我们系统中公司的网站,并允许用户专门搜索这些公司。我们目前使用Sphinx作为我们所有的搜索工具。
我们的客户(我们索引的公司)正在要求他们可以嵌入其网站的搜索小部件,以便将搜索功能添加到他们自己的网站。搜索小部件将允许用户从我们客户的网站提交搜索查询。然后结果将加载到我们的网站上(此搜索功能已在我们的网站上运行...而不是可嵌入的小部件)。起初这看起来很简单,但后来我开始考虑安全性和跨域表单提交。
搜索功能已存在于我们的网站上,如下所示:
/companies/profile_search/1581/die-cutting
companies
是我的控制者。 profile_search
是我的方法。 1581
是要搜索的公司的ID。 die-cutting
是搜索查询。
我希望我们的客户能够简单地将代码剪切并粘贴到他们的网站中以嵌入小部件。
我们的网站主要使用CodeIgniter和Sphinx进行搜索,如果有帮助,我们的网站主要使用PHP构建。
答案 0 :(得分:1)
CodeIgniter具有内置的CSRF保护功能,如果您要求客户将form
粘贴到其网站中,可能会妨碍您。
这样做的简单方法是为您的客户提供一个iframe
标记,以便粘贴,并使用form
从您的网站投放target="_top"
,以便重新加载表单提交整个窗口。
答案 1 :(得分:0)
您也可以只为此方法禁用CSRF;使用预系统挂钩,或者在config.php
中使用更为苛刻的条件,例如:
$config['csrf_protection'] = (stripos($_SERVER["REQUEST_URI"],'/controller/method') === FALSE) ? TRUE : FALSE;
可以找到有关暂时禁用CSRF的详细讨论here。
答案 2 :(得分:0)
对于跨域请求,您可以使用JSONP:http://en.wikipedia.org/wiki/JSONP