我应该如何设置客户可以嵌入其网站的搜索小部件?

时间:2012-06-30 01:17:28

标签: php forms codeigniter search cross-domain

我的公司抓取我们系统中公司的网站,并允许用户专门搜索这些公司。我们目前使用Sphinx作为我们所有的搜索工具。

我们的客户(我们索引的公司)正在要求他们可以嵌入其网站的搜索小部件,以便将搜索功能添加到他们自己的网站。搜索小部件将允许用户从我们客户的网站提交搜索查询。然后结果将加载到我们的网站上(此搜索功能已在我们的网站上运行...而不是可嵌入的小部件)。起初这看起来很简单,但后来我开始考虑安全性和跨域表单提交。

搜索功能已存在于我们的网站上,如下所示: /companies/profile_search/1581/die-cutting

companies是我的控制者。 profile_search是我的方法。 1581是要搜索的公司的ID。 die-cutting是搜索查询。

我希望我们的客户能够简单地将代码剪切并粘贴到他们的网站中以嵌入小部件。

  1. 我应该直接将搜索查询定向到上面的网址吗?
  2. 如果不是,我应该如何设置以确保安全?
  3. 我还有其他问题吗?
  4. 我们的网站主要使用CodeIgniter和Sphinx进行搜索,如果有帮助,我们的网站主要使用PHP构建。

3 个答案:

答案 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