javascript - 为什么我无法从 AngularJS 甚至纯 JavaScript 获取 __RequestVerificationToken 的值?

标签 javascript c# asp.net-mvc angularjs cookies

我正在为 C# MVC 后端代码使用 Bootstrap 和 AngularJS 编写前端应用程序。

使用 Chrome 的开发者控制台(以及任何其他浏览器,包括 IE),我可以看到一个名为 __RequestVerificationToken 的 cookie,如下图所示:

enter image description here

我知道这是一种用于防止 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/

相关文章:

Javascript:使用setTimeout时对象的封装

c# - 从 .net 客户端访问 ssl 服务器(web 服务)

asp.net-mvc - 在 MVC 应用程序上公开 OData

javascript - Angular 自定义可折叠指令在包裹 ng-repeat 内容时失败

c# - NuGet 模块中的 MVC View

javascript - JSRender 模板自定义标签使用

javascript - 使用 jQuery 更改图像并查看图像加载情况

c# - 请求实体对于自托管 ASP.Net Web API 而言太大

c# - 将 WCF 数据表转换为通用/LINQ 对象以供 silverlight 使用的最佳方法

javascript - 获取上一页 URL 而不是当前页面