在 Vue 3 中设置全局 Axios 标头

2023-12-20

我正在尝试使用 Axios 访问我的后端 (Django),但在设置全局标头以在标头中包含 CSRF 令牌时遇到一些问题。

这是到达我的服务器:

import axios from "axios";

async function loadCards() {
  var instance = axios.create({
      xsrfCookieName: window.rootData.csrfToken,
      xsrfHeaderName: "X-CSRFTOKEN",
  });
  return await instance.post(window.rootData.urlpaths.loadCards, {
    'state': props.state.label,
    'filter': props.filter.label,
    'project': window.rootData.project
  })
}

但是,我希望这些标头适用于我的所有内部 api 请求。所以我想我应该将它们建立在一个单独的文件中:

axios-site.js

import axios from "axios";

var siteApi = axios.create({
  xsrfCookieName: window.rootData.csrfToken,
  xsrfHeaderName: "X-CSRFTOKEN",
});

export default {
    siteApi
}

Vue组件

import siteApi from "@/axios-site";

setup () {

    async function loadCards() {
      return await siteApi.post(window.rootData.urlpaths.loadCards, {
        'state': props.state.label,
        'filter': props.filter.label,
        'project': window.rootData.project
      })
    }

}

这是控制台中的错误:

Uncaught (in promise) TypeError: _axios_site__WEBPACK_IMPORTED_MODULE_4__.default.post is not a function
    at _callee$ (ActionColumn.vue?ba4f:97)
    at tryCatch (runtime.js?96cf:63)
    at Generator.invoke [as _invoke] (runtime.js?96cf:293)
    at Generator.eval [as next] (runtime.js?96cf:118)
    at asyncGeneratorStep (asyncToGenerator.js?1da1:3)
    at _next (asyncToGenerator.js?1da1:25)
    at eval (asyncToGenerator.js?1da1:32)
    at new Promise (<anonymous>)
    at eval (asyncToGenerator.js?1da1:21)
    at _loadCards (ActionColumn.vue?ba4f:80)

当我通过外部文件运行它时,似乎有些东西丢失了。我确信我遗漏了一些明显的东西,但我似乎无法指出它。我发现另一个接受的答案遵循类似的逻辑here https://stackoverflow.com/questions/48001813/best-way-to-config-global-headers-for-get-post-patch-in-vuejs,但它不适用于我的情况。有没有可能是 webpack 把事情搞砸了?


您应该导出 axios 实例,如下所示:

export default siteApi

然后在main.js中将其添加到globalProperties :

import siteApi from "@/axios-site";
...
app.config.globalProperties.siteApi=siteApi

在任何子组件中,您都可以访问该属性:

import { getCurrentInstance } from 'vue'

const MyComponent = {
  setup() {
    const internalInstance = getCurrentInstance()

   const {siteApi}= internalInstance.appContext.config.globalProperties 

   async function loadCards() {
      return await siteApi.post(window.rootData.urlpaths.loadCards, {
        'state': props.state.label,
        'filter': props.filter.label,
        'project': window.rootData.project
      })
    }
  }
}

在选项 api 中,如安装的钩子:

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

在 Vue 3 中设置全局 Axios 标头 的相关文章

  • 优化 Django Queryset for 循环

    如何优化以下查询集 link goal for link in self child links all 我想摆脱 for 循环并只访问数据库一次 我有以下代码 class Goal models Model name models Cha
  • 保护基于prototype.js的XHR请求免受CSRF攻击

    Django 已经更新到 1 3 事实上从 1 2 5 开始 它就扩展了该方案 将跨站请求伪造保护令牌传递给 XMLHttpRequests Django 人员提供了帮助jQuery 的一个例子 http docs djangoprojec
  • 检查空查询集

    我想确认这是否是检查空查询集的正确方法 如果这就是为什么我会遇到 UNIQUE 约束错误 syn check Synonym objects filter MD objects get filter dict synonym type St
  • Django Rest Framework 完整性错误捕获

    在 Django Rest Framework 中 我使用了序列化器 视图集和路由器方法 每当我在 django Rest 框架的 API 视图中发布故意错误时 它都会抛出完整性错误 有没有办法尝试捕获错误 例如如果数据中没有错误 则继续保
  • Django 模型表单中的必填字段

    我有一个表格 当我也不想要它们时 会根据需要显示几个字段 这是来自 models py 的表格 class CircuitForm ModelForm class Meta model Circuit exclude lastPaged d
  • Django 无法覆盖表单字段小部件

    我需要在表单中生成基于列的复选框 myapp templates forms widgets custom html div class row for group options index in widget optgroups for
  • Daphne Django 文件上传大小限制

    我使用 Daphne 进行套接字和 http 连接 我正在运行 4 个工作容器 并且现在在 docker 容器中本地运行所有内容 如果我尝试上传 400MB 的文件 我的 daphne 服务器会失败 它适用于最大 15MB 的小文件 我的
  • 如何在仍然使用 unique = True 的同时允许 ModelForm 中的空字段?

    目前在models py I have class ModelName models Model rowname models CharField max length 100 blank True unique True 就确保相同的值不
  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • 将变量从调用它的父页面传递给 Vue 组件

    我有一个简单的表格 显示了我的所有数据 主文件 php table class table table bordered table hover thead tr th Job Name th th Job Description th t
  • 在 Vue 3 的 Jest 测试中模拟 vue-router useRouter()

    我在我的应用程序中使用 Vue 3 和 Vue Router 并且在使用 Jest 对使用的组件创建单元测试时遇到了问题useRoute 例如以下内容
  • 在上传之前预览图像 VUEjs [重复]

    这个问题在这里已经有答案了 我知道这个问题已经被问过 但我不知道如何在vuejs中使用代码 我尝试了很多但没有任何结果 我还添加了我的代码 有人可以帮帮我吗 这是我的代码 谢谢 html
  • Vuetify:v-ripple 只能用于块级元素

    我今天刚开始收到此错误 它破坏了我的整个网站 因为我像个傻瓜一样在页面加载时加载 Vuetify 有谁知道这意味着什么或如何解决它 谷歌搜索没有发现任何有用的信息 Edit 对于因网站也损坏而发现此问题的任何人 这可能是因为您加载的位置vu
  • Django Ajax ModelForm 向 request.POST 提交一个空表单

    对于 django ajax 和 jquery 我是个新手 所以如果我的问题显得微不足道 我提前道歉 我已经在这个问题上摸不着头脑有一段时间了 但我正在尝试使用 ajax 和 jquery 通过 jQuery UI 提供的模式对话框窗口提交
  • 预取相关之后选择相关

    我的模型看起来像 class Book models Model publisher models ForeignKey Publisher This is not important class Baz models Model a mo
  • Django 管理列降序排序

    当使用 Django admin 时格拉佩利 https github com sehmaschine django grappelli我希望单击列标题即可按降序对表格进行排序 我不希望通过在模型元类中定义排序字段来对列进行默认排序 默认行
  • Vue.js - 当标头中使用 multipart/form-data 时,axios 中的文件上传验证失败

    我正在构建一个 Laravel Vue js SPA 单页应用程序 BootstrapVue https bootstrap vue js org Vee验证 https logaretm github io vee validate gu
  • Django模型递归关系

    为什么要创建递归关系 aField models ForeignKey self 这和上面的一样吗 class aClass models Model aField models ForeignKey aClass 当您希望父节点和子节点具
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 没有 Neo4Django 的 Django 和 Neo4j

    我正在使用 Neo4j 以及 Postgres 构建一个 Django 应用程序 我发现这个 Django 集成称为新4django https github com scholrly neo4django 我想知道是否可以只使用neo4r

随机推荐

  • 显示 Scala 表达式的推断类型

    如何查看 Scala 编译器为表达式等推断的类型 我有一些具有复杂类型推断和隐式转换的代码 仅通过阅读代码很难看出发生了什么 我尝试过添加 scalacOptions in Compile Xprint types 在build sbt中
  • 关于fork和execve系统调用

    据说fork系统调用创建调用进程的克隆 然后 通常 子进程发出execve系统调用来更改其映像并运行新进程 为什么要分两步走 顺便说一句 什么是execve代表 采取两步走的原因是灵活性 在这两个步骤之间 您可以修改新执行的程序将继承的子进
  • 我们如何更改标签中的行?

    我有一个标签 在设置文本时我想更改行 例如 String str first line n Secondline JLabel label setText str 我尝试了上面的代码 但它不起作用 如何更改字符串中的行 Swing 不使用经
  • 获取自定义用户控件中声明的事件的所有事件处理程序

    我正在尝试编写一个通用函数 给出对控件 组件的引用以及在其类上声明的事件的名称 它应该能够检索 通过反射 当前为指定事件名称注册的所有事件处理程序 我遇到的第一个也是主要问题 已解决 因此您可以忽略本段 是我在 StackOverflow
  • Perl 中“0 but true”是什么意思?

    有人能解释一下 Perl 中字符串 0 but true 的确切含义吗 据我了解 它在整数比较中等于零 但在用作布尔值时计算结果为 true 它是否正确 这是语言的正常行为还是解释器中将其视为特殊情况的特殊字符串 这是语言的正常行为 引用p
  • 如何在 PHP 中从客户端设置自定义 $_SERVER 变量

    根据这篇文章 哪些 SERVER 变量是安全的 https stackoverflow com questions 6474783 which server variables are safe我见过的另一个例子是 客户端似乎能够设置自定义
  • HTML5 地理定位高度

    我正在为我正在从事的项目使用 html5 地理定位 api 纬度和经度报告正确 但高度始终返回为 空 测试设备是 Nexus 4 和 5 还有其他人遇到过类似问题吗 绝对地 这似乎是一个可能特定于浏览器的问题 由于我在 iPhone 和 A
  • gcc 生成的 x86_64 汇编代码中的 xorl %eax, %eax

    我对组装完全是个菜鸟 只是四处看看发生了什么 无论如何 我写了一个非常简单的函数 void multA double x long size long i for i 0 i
  • HTTP 的 BPF 是什么?

    定义可见here http en wikipedia org wiki Berkeley Packet Filter 候选人的答案可能是tcp and dst port 80 但是可以tcp and dst port 80保证它是HTTP流
  • Visual Studio 类图未显示关系

    当我定义类属性而不使用字段 使用 C 3 0 启用 时 类图未显示我的一对一 多关系 不过 继承在图中是可见的 有没有办法来解决这个问题 当您右键单击字段或属性时 您可以选择显示为关联或显示为集合关联
  • Flutter Android Studio 错误:无法获取未知属性“keystoreProperty”

    我是 flutter 新手 我正在尝试运行我的第一个项目 而不对演示应用程序的源代码进行任何更改 但我不断收到以下错误 Launching lib main dart on SM A115F in release mode Running
  • Rails 如何验证文件格式?

    如何验证我的文件字段的格式是否正确 我希望图像字段验证它是 png jpg jpeg 以及结尾为 flv 的 flv 还有它的结尾为 mov 的 Quicktime 以及如何创建错误消息来告知该字段无效 我的 simple form for
  • 访问cookie过期时间owin

    我正在尝试访问 Owin 上的过期时间 我正在使用以下示例 访问 Owin Cookie 身份验证的 ExpireTimeSpan 属性以通知用户登录到期 https stackoverflow com questions 27107264
  • 如何在 PHP 中克隆 gd 资源

    我正在寻找用 PHP 创建的克隆图像imagecreatetruecolor或其他一些图像创建功能 正如评论中所说 不 你不能做出像这样简单的感情 copy original 这是因为资源是引用 不能像标量值一样被复制 例子 a image
  • 用于获取标签列表的 GCP API

    是否有用于获取资源标签的 GCP API 我想要获取 GCP 项目的所有标签的列表 如何获取GCP中的所有标签 基本上 GCP 资源管理器 API 返回每个资源的 Lebel 对象 但我想使用一个 API 调用获取所有标签的列表 我尝试了下
  • 如何获取 numpy 数组中最大值的所有索引?

    我有一个数字数组 最大值可能会出现多次 我们如何获得数组中所有出现最大值的索引集合 例如 对于以下数组 import numpy as np a np array 1 2 3 2 3 2 1 3 结果应该是 2 4 7 或等效的数组或元组
  • Docker - 使用多模块 Maven 项目进行多阶段构建

    我有一个具有 root 的 Maven 项目pom xml具有多个子文件夹作为模块和依赖项的文件 它看起来像这样
  • 导入错误:没有名为flask.ext.script的模块

    事实上我现在无法使用任何软件包 导入错误 没有名为flask ext script的模块 https i stack imgur com dARhF png 导入错误 没有名为 Pymongo 的模块 https i stack imgur
  • php删除大括号和里面的内容检索剩余

    want to 删除大括号内的 php 字符串的特定文本 包括大括号 它应该被删除 数据串如下所示 page header this text should not be removed menu list menu list 2 this
  • 在 Vue 3 中设置全局 Axios 标头

    我正在尝试使用 Axios 访问我的后端 Django 但在设置全局标头以在标头中包含 CSRF 令牌时遇到一些问题 这是到达我的服务器 import axios from axios async function loadCards va