KrakenJS:通过控制器执行POST请求以错误结束
我使用KrakenJS来构建Web应用程序。作为MVC,我正在通过控制器实施REST服务,下面是示例代码:KrakenJS:通过控制器执行POST请求以错误结束
//users can get data
app.get('myRoute', function (req, res) {
readData();
});
//users can send data
app.post('myRoute', function (req, res) {
writeData();
});
我可以读取没有问题的数据。但是,当我尝试使用POST请求尝试伪数据插入时,它最终出现此错误:
Error: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, like 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模块,因此您可以从这里获得有关如何禁用/配置的信息:https://github.com/paypal/lusca
由于Dan说您可以关闭csrf,但您可能还想考虑使用它以提高安全性带来。
退房获取更多信息的购物车示例:https://github.com/lmarkus/Kraken_Example_Shopping_Cart
我用了一招早些时候,你不必关闭CSRF ...
在你的“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
});
我使用angul arjs BTW
如果您不需要CSRF:
通过在您的config.json放置在这个中间件和设定值,以虚假的,你是禁止使用CSRF middlware的,你的应用程序将充当预期。
"middleware": {
"appsec": {
"priority": 110,
"module": {
"name": "lusca",
"arguments": [
{
"csrf": false,
"xframe": "SAMEORIGIN",
"p3p": false,
"csp": false
}
]
}
},
这是真的,这是从我这里是相当愚蠢的...配置文件实际上有一个属性“csrf”:真,它就像改变它一样简单。我盯着这两个小时,这是当你在夜间编码时发生的事情;) – balanza