2

我将 Angular 1.0.4 与 ASP.NET MVC4 + Web API 项目一起使用。我试图利用 Angular 的 CSRF 保护无济于事。我可以看到我正在传递一个名为 XSRF-TOKEN 的 cookie,但是当 angular 尝试将该值添加为响应中名为 X-XSRF-TOKEN 的标头时,该值显示为未定义。我尝试按照此处的建议进行操作,但 HTML 尚未呈现,因此未找到任何元素。

我可能会错过什么?由 ASP.NET MVC 生成的 RequestVerificationToken cookie 是否受到 javascript 访问的保护?

此外,是否可以让角度懒惰地检索 cookie 或表单输入值?如果是这样,怎么做?我找不到任何有关如何执行此操作的文档。

4

1 回答 1

1

我找不到我的问题的确切答案。我最终创建了一个服务来查找'input[name="__RequestVerificationToken"]',获取它的值,并返回一个具有该值的对象。然后我使用该对象在配置中设置标题。这让我可以懒惰地提取并附加该值作为不会立即出现在页面上的表单的标题。

我还意识到,经过进一步审查,ASP.NET 的 AntiForgeryToken 支持需要 cookie 和表单输入/标题值来验证,因此内置的 AngularJS 支持无论如何都不够。

如果有人有更好的解决方案,我很乐意将答案转移到该解决方案。

于 2013-03-19T19:37:47.337 回答