我正在为 C# MVC 后端代码使用 Bootstrap 和 AngularJS 编写前端应用程序。
使用 Chrome 的开发者控制台(以及任何其他浏览器,包括 IE),我可以看到一个名为 __RequestVerificationToken
的 cookie,如下图所示:
我知道这是一种用于防止 CSRF 的技术攻击。无论如何,因为这个 cookie 在那里,我试图使用 AngluarJS 模块 $cookies
获取它的值,但它总是返回 undefined
,并打印 document.cookie
不显示它。下面是使用的代码:
...
this.initApp = function () {
console.log('Value of __RequestVerificationToken: "' + $cookies.__RequestVerificationToken + '"'); // Angular way
console.log('Cookie: "' + document.cookie + '"'); // Pure JavaScript
};
...
所以我的问题是,如果 cookie 存在并且在每个响应中都被发送到客户端,为什么我不能获取它的值,我如何获取它的值?
最佳答案
您有 [ValidateAntiForgeryToken]
属性,该属性在您的操作之前将唯一值写入 HTTP-only cookie。您还应该在表单中添加 @Html.AntiForgeryToken()
并将相同的值作为隐藏字段写入表单。
var token = $('input[name="__RequestVerificationToken"]').val();
关于javascript - 为什么我无法从 AngularJS 甚至纯 JavaScript 获取 __RequestVerificationToken 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26744345/