现在需要通过 rails 作为后端,为 android 提供数据。但是在 form 提交的时候,发现一个 csrf 的问题。 我的解决方案是,在 post 提交之前,android 端先 get 方式请求一次,我把 token 传送过去,然后,post 提交的时候,把这个 token 带上。不知道只有可行不?还是说有更简单的方法
因为你手机端都是不支持 cookie 的,所以一般验证会以其他形式来实现,如:将 u_id 和 auth_token 放在 HTTP 头里。
如果单纯以 api 的形式供调用,csrf 是可以禁用的。
我觉得既然客户端是 app,那也没什么太大必要做 csrf 防御,直接将 ApplicationController 里的 protect_from_forgery 注释掉就 OK 了
你的 get 请求就能获取 csrftoken 那么这个令牌还有啥用,谁都可以请求了令牌再发请求了。。完全失去了这个令牌的存在意义。。
1、既然你提交 form 有 csrf 的问题,说明你并没有用到 webview, 也就是直接使用 http 进行交互。那么你的请求是不会带 cookies 的 2、csrf token 的生成是跟 cookies 有关的,你直接 get 方式,是可以拿到 token,只不过这个 token 是无效的。再次 post 时只会报402
402
建议: