当前位置: 首页 > 面试题库 >

Django CSRF令牌+ Angular.js

梁德馨
2023-03-14
问题内容

我有使用mod_wsgi在apache服务器上运行的django,以及由apache(而不是django)直接提供服务的angularjs应用。我想对django服务器进行POST调用(运行rest_framework),但csrf令牌存在问题。

是否可以通过某种方式从服务器设置令牌而不将其{% csrf token %}作为模板的一部分放置(因为这些页面没有经过django)?

  1. 我希望能够通过GET请求以cookie的形式获取csrf令牌。
  2. 我希望能够使用csrf令牌cookie值向django服务器发出POST请求。

问题答案:

Django和AngularJS都已经有CSRF支持,您的工作很简单。

首先,您需要在Django中启用CSRF,我相信您已经这样做了,否则请按照Django doc
https://docs.djangoproject.com/en/1.5/ref/contrib/csrf/#ajax进行操作。

现在,Django将设置一个csrftoken在第一个GET请求上命名的cookie ,并期望X-CSRFToken在以后的POST / PUT /
DELETE请求上使用自定义HTTP标头。

对于Angular,它希望cookie命名为,XSRF-TOKEN并且将执行带有X-XSRF-TOKEN标头的POST / PUT /
DELETE请求,因此您需要做一些调整以使两者相互兼容:

$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';

在您的js代码中的某处添加以上两行,module.config()块是实现此目的的好地方。

而已。

注意: 这是针对角度1.1.5,较旧的版本可能需要不同的方法。

更新:

由于django不提供angular应用,因此为了设置cookie,angular app需要先对django进行GET请求。



 类似资料:
  • 我有以下ANTLR 4的语法: 我试图解析以下字符串 代码解析出左侧的ab cd,在我的应用程序中,它将被视为文本字符串。然后,它将解析为一个字符集,在这种情况下,该字符集将转换为任何数字。我的语法对我来说很有用,但我不喜欢将语法作为语法分析器规则(CHAR | DASH),因为它只是被当作一个标记。我希望lexer创建一个字符串,并给我以下标记: 而不是这些 我看了其他的例子,但还没有弄明白。通

  • 我不熟悉,它代表。我混淆了它的两个术语:访问令牌和刷新令牌。 用户注册/登录站点后,我创建和。 将刷新标记保存在数据库或cookie中。 15分钟后,用户标记访问令牌过期。 如果用户空闲2小时,我将从cookie或DB中删除刷新令牌,否则我将使用刷新令牌续订访问令牌。 有什么优化的方法可以达到这个目的吗?

  • 我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令

  • 我已经阅读了JWT和访问令牌和刷新令牌。我知道您必须在很短的时间(分钟)内设置访问令牌过期,并在过期时使用刷新令牌获取新的访问令牌。 我不清楚三件事: 谁检查访问令牌是否过期?客户端是否通过发送过期的访问令牌和刷新来检查并请求新的访问代码? 谁检查刷新令牌是否过期?(显然刷新令牌也需要过期,尽管需要更长的时间才能过期)。 在我看来,如果刷新令牌过期,则必须提示用户重新登录。在某些情况下(移动应用)

  • 我正在构建一个使用JWT进行身份验证的应用程序。我开始做一些研究,但对于诸如刷新令牌和令牌存储之类的主题缺乏共识,我感到惊讶。 据我所知,JWT和OAuth是两个不同的协议,它们遵循不同的规范。 但我的问题是,对于一个没有通过第三方资源服务器如Google、Facebook等认证的应用程序,有一个刷新令牌真的有用吗?为什么不让JWT令牌像刷新令牌一样持续时间长。 另一方面,我可以看到,如本文所述,

  • 问题内容: 我正在尝试使用Elasticsearch来实现自动完成功能,因为我知道该怎么做… 我正在尝试在索引已爬网数据时使用ES的edge_n_grams建立多词(短语)建议。 a 和a 之间有什么区别-我已经阅读了有关这些文档,但仍需要更多了解…。 例如,token_filter是ES用来针对用户输入进行搜索的内容吗?ES用于制作令牌的令牌生成器是吗?什么是代币? ES是否可以使用其中任何一种