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 } ] } },