KrakenJS:通过控制器执行POST请求以错误结束
我正在使用KrakenJS来构build一个Web应用程序。 作为MVC,我正在通过控制器实现一个REST服务,下面是一个示例代码:
//users can get data app.get('myRoute', function (req, res) { readData(); }); //users can send data app.post('myRoute', function (req, res) { writeData(); });
我可以读取没有问题的数据。 但是,当我尝试用POST请求尝试虚拟数据插入时,最终出现此错误:
错误:Forbidden 127.0.0.1 – – [Thu,06 Feb 2014 00:11:30 GMT]“POST / myRoute HTTP / 1.1”500 374“ – ”“Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,像Gecko)Ubuntu Chromium / 32.0.1700.102 Chrome / 32.0.1700.102 Safari / 537.36“
我怎样才能克服呢?
有一件事是确保你发送正确的CSRF标题( http://krakenjs.com/#Security )。 如果我没有记错的话,Kraken预计这些头文件会被指定。
你也可以禁用CSRF,看看是否解决了你的问题。 由于Kraken使用CSRF的Lusca模块,您可以从这里获得有关如何禁用/configuration的信息: https : //github.com/paypal/lusca
我之前用过一个把戏,你不必closurescsrf …
在你的“index.dust” – >中
<input id="csrfid" type="hidden" name="_csrf" value="{_csrf}">
在你的“script.js” – >中
var csrf = document.getElementById('csrfid').value; $http({ method: 'POST', url: 'http://localhost:8000/myRoute/', data: { '_csrf': csrf, 'object': myObject } }).success(function(result) { //success handler }).error(function(result) { //error handler });
我正在使用angularjs顺便说一句
正如丹说,你可以closurescsrf,但你也可以考虑使用它,因为它增加了安全性。
查看购物车示例了解更多信息: https : //github.com/lmarkus/Kraken_Example_Shopping_Cart
如果你不需要csrf:
通过将它放置在config.json中的中间件中,并将这些值设置为false,您将禁用csrf middlware,并且您的应用程序将按预期运行。
"middleware": { "appsec": { "priority": 110, "module": { "name": "lusca", "arguments": [ { "csrf": false, "xframe": "SAMEORIGIN", "p3p": false, "csp": false } ] } },
- 当使用enctype =“multipart / form-data”时,我得到CSRF错误
- 为什么Express / Connect为每个请求生成新的CSRF令牌?
- TypeError:无法在Object.handle中读取未定义属性'csrfSecret' – 使用Node.js
- 使用csurf和react-server
- sails.js启用用于浏览器访问的csrf,并禁用用于本地应用程序访问的csrf
- csurf AJAX调用 – 无效的CSRF令牌
- 为什么在获取请求后,远程服务器响应在nodejs上不包含x-csrf-token?
- 用于快速/连接的Ajax兼容中间件
- CSRF 403禁止 – 无效的CSRF令牌