Sab*_*kar 29 javascript-framework angularjs
我正在使用AngularJS和Rails.我有以下请求批量更新用户.
$http{
method: 'POST',
url: $scope.update_url,
params: {selected_ids: userIds}
}
Run Code Online (Sandbox Code Playgroud)
由于URL的长度限制,这不能是'GET'请求(http://support.microsoft.com/kb/208427)
但对于'POST'请求,我们需要在标头中有一个CSRF真实性标记.
如何将CSRF令牌设置为post请求标头?
asg*_*oth 67
您可以按照$ http服务中的说明设置http标头.
您可以在全球范围内进行设置:
$httpProvider.defaults.headers.post['My-Header']='value' (or)
$http.defaults.headers.post['My-Header']='value';
Run Code Online (Sandbox Code Playgroud)
或单个请求:
$http({
headers: {
'My-Header': 'value'
}
});
Run Code Online (Sandbox Code Playgroud)
这是Angular的重要引用:
跨站请求伪造(XSRF)保护XSRF是一种未经授权的站点可以获取用户私有数据的技术.Angular提供以下机制来对抗XSRF.执行XHR请求时,$ http服务从名为XSRF-TOKEN的cookie中读取令牌,并将其设置为HTTP头X-XSRF-TOKEN.由于只有在您的域上运行的JavaScript才能读取Cookie,因此您的服务器可以确保XHR来自您域上运行的JavaScript.
要利用这一点,您的服务器需要在第一个HTTP GET请求中在名为XSRF-TOKEN的JavaScript可读会话cookie中设置令牌.在后续的非GET请求中,服务器可以验证cookie是否与X-XSRF-TOKEN HTTP标头匹配,因此请确保只有您域上运行的JavaScript才能读取令牌.令牌对于每个用户必须是唯一的,并且必须由服务器验证(以防止JavaScript组成自己的令牌).我们建议令牌是您网站的身份验证cookie的摘要,以增加安全性.
归档时间: |
|
查看次数: |
52724 次 |
最近记录: |