如何在`Axios.interceptors.request`的配置中获取Cookies的`csrftoken`?

2024-02-02

我怎样才能得到饼干csrftoken in Axios.interceptors.request的配置?

Axios.interceptors.request.use(
  config => {

    if (
      config.method === "post" ||
      config.method === "put" ||
      config.method === "delete"||
      config.method === "get"
    ) {

    }


    if (Cookies.get('token')!==undefined) {   
      config.headers['Authorization']= 'Token '+Cookies.get('token');
    }
    // there I try to get the `csrftoken` in the Cookies, but I can not get.
    if (Cookies.get('csrftoken')!==undefined) {   

      config.headers['x-csrftoken']= Cookies.get('csrftoken');  // 'CSRFToken'
    }

    return config;
  },
  error => {  
    return Promise.reject(error.data.error.message);
  }
);

In the Axios.interceptors.request的配置我无法获取 Cookiescsrftoken: Cookies.get('csrftoken').

我的 AxiosConfig 代码如下:

AxiosConfig:{
    baseURL: 'http://10.10.10.105:8001/',

    responseType: "json",
    withCredentials: true,  // there will send the Cookie (with it there are: sessionid, csrftoken)

    xsrfCookieName: 'csrftoken',  // default: XSRF-TOKEN
    xsrfHeaderName: 'x-csrftoken',   // default: X-XSRF-TOKEN
    headers: {
      "Content-Type": "application/json;charset=utf-8"
    }
  }

edit-1

有的是csrftoken在 Cookie 中。


edit-2

而在cookie中,没有csrftoken too.


edit-3

如果我得到document.cookie在控制台中,我会得到"": ```

文档.cookie


edit-4

在我的 Django 后端中,settings.py:

已安装的应用程序:

...
'corsheaders', 

'rest_framework',
'rest_framework.authtoken',
'rest_framework_docs',   
'rest_auth',
'allauth',
'allauth.account',
'allauth.socialaccount',
'rest_auth.registration',
...

我不确定是否rest_auth and allauth将影响csrftoken.


首先,始终确保 cookie 没有被标记为httpOnly https://www.owasp.org/index.php/HttpOnly.

如果是的话,你的javascript代码将无法读取/修改其内容。

您可以检查浏览器中的cookies选项卡,您将看到它是否可读。

但就你而言,django不应该将标志设置为httpOnly as the docs https://docs.djangoproject.com/en/2.0/ref/csrf/#acquiring-the-token-if-csrf-use-sessions-is-false描述如何读取其中的值javascript直接来自cookie。

根据我的经验,我可以指出几点:

  • 当您在拦截器中接收数据时,配置对象可能尚未填充数据。因此设置config.headers = ...;可能会触发错误。

确保你写的是:

config.headers = config.headers || {}; 

在设置之前headers so no 'config.headers 未定义'将被触发。

  • 或者直接读取 cookie,存储csrf隐藏的值input按照默认程序。

你可以这样做(语法可能不正确):

<input type="hidden"
   name="csrftoken"
   value="{% csrf_token %}"/>
</div>

然后在拦截器中发送令牌:

config.headers['x-csrftoken'] = document.querySelector('input[name="csrftoken"]').value;

在这种情况下,由于您不需要读取 cookie,因此它将是巨大的优势将其设置为httpOnly.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在`Axios.interceptors.request`的配置中获取Cookies的`csrftoken`? 的相关文章

  • 特定日期的plotly js图像标记

    我正在使用这个例子 https plot ly javascript images add multiple images https plot ly javascript images add multiple images并尝试在特定日
  • 解析:Promise.when 有很多 Promise?

    解析文档 https www parse com docs js symbols Parse Promise html when https www parse com docs js symbols Parse Promise html
  • Bootstrap 按钮的检查状态

    我想在 Bootstrap 3 0 2 中设置组复选框的选中状态 docs http getbootstrap com javascript buttons html div class btn group div
  • 如何使用 Angular 1.5 中的组件为每个页面设置标题

    我最近开始使用 Angular 1 5 组件 我的应用程序中有多个页面 所以我决定创建一个
  • 如何提取 Backbone 集合的属性

    我想从 Backbone 集合创建一个特定属性值的数组 var days select this collection models function model return model attributes type session d
  • 考虑使用“jsdom”测试环境

    我有这个简单的测试 import React from react import render from testing library react import Button from describe Button gt it rend
  • Nightmare.js 截图缓冲区长度 0

    我正在运行一个 night js 脚本 我试图在其中截取页面上多个元素的屏幕截图 The first元素被捕获得很好 但折叠下方的所有其他元素都以零长度捕获 我正在努力调试这个问题 任何帮助将非常感激 基本上这个脚本会遍历一个页面并选择al
  • 为什么此 Firebase 可调用函数不返回值?

    我有一个应返回值的可调用函数 但唯一返回的是 null 以下是该功能的当前版本 我也尝试过回报第一个承诺 原来的once调用 最后在另一个then返回 GUID 在这种情况下它实际上返回了数据 但它立即返回并且 GUID 为空 我怎样才能实
  • JavaScript 语法是什么:{Ci, CC}? [复制]

    这个问题在这里已经有答案了 我正在做一些 FF 附加开发 我看到这样的语法 var Cc Ci require chrome 只是好奇这个语法是什么 以及它是否对 FF 开发或其他东西有特殊意义 这称为解构赋值 它的一个特点是JavaScr
  • 使用 JSONP 时出现“无效标签”?

    我的 JSONP 请求有问题 数据不会显示 Firebug 显示 无效标签 错误 我的 JavaScript ajax url link dataType jsonp beforeSend function xhr var base64 b
  • 如何根据本地存储中的另一个数据响应推迟 XMLHttpRequest [重复]

    这个问题在这里已经有答案了 function to download pps compress txt from cloud server for global parameter set PPs function get pps para
  • 从 mvc web api httpresponse 生成 csv 并通过 angularjs 接收以供下载

    我正在尝试从我的 Web api 生成一个 CSV 文件并通过 angularjs 接收该文件 我有一个如下所示的 API 控制器 HttpPost public HttpResponseMessage GenerateCSV FieldP
  • Safari 和 Edge 中的 audioContext.copyToChannel() 替代方案

    Safari 和 Edge 都不支持audioContext copyToChannel 函数用自定义内容填充audioBuffer 还有其他方法吗 就我而言 我想创建一个脉冲响应 用该响应填充缓冲区 并将一些声音与该缓冲区进行卷积 对于
  • Opera Mobile 9.7 Beta 设置焦点 [重复]

    这个问题在这里已经有答案了 我们使用手持式扫描仪将物品移入和移出库存 扫描仪运行一个 ASP 页 该页提交表单以移动项目 我们最近购买了一台运行 Windows Mobile 6 1 的新扫描仪 很快就意识到 Mobile IE 完全没用
  • ajax调用后如何停止刷新页面?

    ajax 调用后我无法停止刷新页面 我尝试过放置 e preventDefault 并返回 false 但我的页面又刷新了 我不知道代码有什么问题或者什么 请帮助我在ajax调用后停止刷新页面 解决这个问题对我来说会有很大的帮助 提前致谢
  • 无法使用 Excel JavaScript API 设置 NumberFormat

    我正在使用 Excel Javascript API 在搜索文档后 仍然找不到我想要实现的解决方案 因此 我想将所有内容设置为数字格式 文本 这样 Excel 的自动格式设置就不会与任何单元格的内容混淆 不会删除前导零或更改日期格式 文档建
  • Ace Editor 自动完成和多种语言

    如何为 Ace 编辑器创建自动完成功能以及如何突出显示 php 中的 html javascript 和 csshttp ace ajax org http ace ajax org
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • 电子节点集成不起作用,也普遍奇怪的电子行为[重复]

    这个问题在这里已经有答案了 我是 Electron 的新手 我一直在努力让它工作 我遇到了无法解释的行为 所以这里有一个总结 我无法让 Electron 和 html 之间的通信正常工作 即使我有nodeIntegration true 网
  • 如何在不接受焦点的元素上捕获键盘事件?

    我知道要处理输入字段中的键盘事件 您可以使用 input keyup function e var code e keyCode and 13 is the keyCode for Enter 但是 现在 我有一些div and li元素

随机推荐

  • 在 Android Studio 中配对蓝牙设备

    我正在创建一个应通过蓝牙连接到特定设备的应用程序 我希望我的应用程序能够与该设备连接 无论它是否已配对 现在我有这个 private void findDevice Set
  • 在不使用 contenteditable 的情况下,防止 Firefox iframe 中的选择显示为灰色

    在 Firefox 3 及更高版本 可能还有更旧的版本 中 在 iframe 中选择内容似乎总是使用当前没有焦点的文档所使用的灰色选择背景颜色 即使 iframe 确实有焦点 我发现的唯一例外是 iframe 中的内容是可编辑的 在其他浏览
  • Graphx 可视化

    我正在寻找一种方法来可视化在 Spark 的 Graphx 中构建的图 据我所知Graphx没有任何可视化方法 所以我需要将数据从Graphx导出到另一个图形库 但我被困在这里 我遇到了这个网站 https lintool github i
  • SQL Server JDBC 的驱动程序类名是什么

    我想将我的 Java Spring Boot 应用程序连接到 SQL Server 并得到 Spring 无法加载驱动程序类的信息 我试过 spring datasource driver class name com microsoft
  • 如何在网页中隐藏 javascript 代码?

    当通过浏览器的 查看源代码 功能查看源代码时 是否可以从网页的 html 中隐藏 Javascript 代码 我知道可以混淆代码 但我更喜欢它hidden从查看源功能 我不确定其他人是否真的直接解决了您的问题 即从浏览器的 查看源代码 命令
  • 版本陷入“已拒绝”状态

    我想删除我们用于测试的旧发布模板 以清理发布管理 但是当我尝试停用模板时 我收到以下消息 要停用此版本模板 任何使用此版本的版本 模板必须具有以下状态之一 已发布 已放弃 好吧 这个消息是有道理的 我必须完成一些未完成的版本 要么完成该过程
  • 如何将 Postman 集成测试与 TeamCity 集成

    我正在 Postman 中构建一套集成测试来测试一些 RESTful API 我想在 TeamCity 中构建项目时运行这些测试 我正在考虑使用纽曼命令行集成 但我没有找到很好的例子 谁能建议一种方法来实现这一点 我能够使用 newman
  • 以编程方式关闭特定包的 java.util.logging

    我正在使用一个 SDK 它使用阿帕奇CXF http cxf apache org 内部 Apache CXF 使用java util logging默认情况下用于日志记录的包 我想更改日志记录级别INFO to WARNING或完全关闭它
  • 使用 chai-http 和 Jest 进行测试时,如何从 api 返回响应

    我正在尝试使用下面的代码测试我的节点 api 索引端点 索引 test js const chai require chai const chaiHttp require chai http const server http localh
  • Java 异常 - 线程“main”中的异常 java.lang.NoClassDefFoundError: net/sourceforge/tess4 j/Tesseract

    我试图让事情与 tess4j OCR 算法 一起工作 并且我使用以下代码 import java awt image RenderedImage import java io File import java net URL import
  • 复制 .docx 并保留图像

    我正在尝试将文档的元素从一个文档文件复制到另一个文档文件 文本部分很简单 图像是棘手的地方 附加图像来解释文档的结构 只有一些文本和 1 张图像 from docx import Document import io doc Documen
  • Xcode:如何将 MP4 文件转换为音频文件

    我想将应用程序文档文件夹中的 MP4 文件转换为音频文件 mp3 或 m4a 我已经尝试过 但无法使用 AVPlayer 播放转换后的 MP3 文件 这是我的代码 void convertMP4toMP3withFile NSString
  • Android 中的 Google 地图上的标记闪烁

    我刚刚开始Android应用程序开发 按照本教程开发了Google地图应用程序并在Google地图上添加了标记 http mobiforge com developing story using google maps android ht
  • 获取用户头像大小的照片

    我正在使用 C 开发 Facebook 网站应用程序 我可以使用以下方式获取信息 FacebookClient FBApp new FacebookClient getAccessToken dynamic user FBApp Get m
  • g++编译错误

    我是 Ubuntu 的新手 我尝试编写一个简单的 Hello World Ubuntu 11 04 中的 c 代码 该代码 在终端中 gcc Wall W Werror tex cpp o tex 但编译器返回了很多错误 tmp ccL8c
  • 用于本地化的流畅 NHibernate 映射

    我正在尝试从 NHibernate 映射构建数据库 但遇到了问题 我有许多具有本地化字符串值的类 public class MyClass1 public virtual int Id get set public virtual Shor
  • 如何创建私有类方法?

    这种创建私有类方法的方法是如何工作的 class Person def self get name persons name end class lt lt self private def persons name Sam end end
  • Dart 异常:已经为元素 x 注册了(聚合物)原型

    我有两个共享相同飞镖文件的聚合物元件 在 dart 文件中 我声明了两个 PolymerElement 类 直到聚合物 0 15 0 1 都工作正常 我已将项目更新为聚合物 0 15 1 现在出现此异常 Exception Already
  • 函数参数过多

    我从我的头文件中收到此错误 too many arguments to function void printCandidateReport 我对 C 相当陌生 只需要一些正确方向的指导来解决此错误 我的头文件如下所示 ifndef CAN
  • 如何在`Axios.interceptors.request`的配置中获取Cookies的`csrftoken`?

    我怎样才能得到饼干csrftoken in Axios interceptors request的配置 Axios interceptors request use config gt if config method post confi