我正在尝试学习Sails JS和显然是REST API。
我创建了一个用户模型,我觉得它工作正常(它与我的数据库通信数据)。我还创建了一个包含4个输入的注册控制器,用于在我的用户集合中存储新记录。 (此控制器生成一些其他数据以在注册时完成记录)
我想用POSTMAN测试这个控制器,所以我转到我的routes.js
看看:
'POST /api/v1/entrance/signup': { action: 'entrance/signup' },
但是当我在192.168.1.13:1338/api/v1/entrance/signup
输入POST请求并声明了我需要的4个输入时,我得到了这个答案:禁止
我不知道自己做错了什么。我还在blueprints.js
有人有想法吗? :)
答案 0 :(得分:2)
如下所述,删除CSRF保护不是一个答案,因为它可能会使api暴露于安全漏洞。我目前使用JWT,但它似乎不像CSRF令牌那样安全,所以唯一正确的方法是在每个HTTP的请求头中包含令牌。
答案 1 :(得分:2)
问题确实与cross-site request forgery有关,但完全禁用相应的安全规则显然不是解决方案。 CSRF及其在sailsjs中的处理在manual的相应部分中有详细描述。简而言之,要使POST工作,您必须在请求中包含_csrf。例如。在视图模板中:
<form>
<input type="hidden" name="_csrf" value="<%- _csrf %>" />
</form>