防止在html应用程序之外调用我的JSON api

时间:2014-08-20 19:13:27

标签: ruby-on-rails ajax json api

我将我的前端与后端分开,以便它们通过JSON调用(由rails后端生成)进行通信。

即,我的应用程序调用get_info.json,它运行一个控制器,将ajax信息返回给前端。

如何防止随机用户直接运行get_info.json脚本,从而直接访问JSON信息?

2 个答案:

答案 0 :(得分:0)

您需要为json api实现身份验证。

可以像将api_key param传递给每个请求一样简单。

或者您可以限制对特定IP的路由访问。

get "/posts" => "posts#show", :constraints => {:ip => '127.0.0.1'}

答案 1 :(得分:0)

如果前端和后端位于同一个RoR应用程序中,则可以使用CSRF令牌。

只需将一个param传递给json调用,如get_info.json?token =<%= form_authenticity_token.html_safe%>,然后在你的后端控制器中检查是否params [:token] == form_authenticity_token。

希望这会对你有所帮助。