IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue axios拦截器请求头设置token 跨域,vue.config设置代理 无效的解决办法 -> 正文阅读

[JavaScript知识库]vue axios拦截器请求头设置token 跨域,vue.config设置代理 无效的解决办法

前置条件:
本地启动的:
前端,端口:8080
后端,端口:10000
需求:
在每次请求时我把token放在请求头中,就考虑到在请求拦截器里面进行设置,设置代码如下:

axios.defaults.baseURL = "http://localhost:10000"
axios.interceptors.request.use(config => {
  config.headers.token = 'token' // 先使用假token进行测试
  return  config
}, error => {
  console.log(`err`, error)
})

请求接口如下:

axios("/article/articleType")

报错信息如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说是跨域了;后端也设置阻止跨域了,代码如下:

 res.header("Access-Control-Allow-Origin", "*");
 res.header("Access-Control-Allow-Headers", "X-Requested-With,token");
 res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
 res.header("Access-Control-Allow-Credentials", true);

但还是莫名奇妙的报错;
于是想到了使用代理,
在vue项目里面使用代理的时候,需要看清是vue脚手架还是webpack脚手架,网上说vue脚手架配置在vue.config.js,webpack配置在webpack.config.js里面
我使用的是vue的,版本是3的

然后配置,配置的时候和网上的一样,下面参考了一下网上的,我在上面做了改动,改动的地方就是我出问题的地方:

axio配置参数修改:

axios.defaults.baseURL = "/api"
axios.interceptors.request.use(config => {
  config.headers.token = 'token' // 先使用假token进行测试
  return  config
}, error => {
  console.log(`err`, error)
})

vue.config.js修改

module.exports = {   
devServer:{
   //proxy:{'/api':{}},代理器中设置/api,项目中请求路径为/api的替换为target
   proxy:{
       '/api':{
           target: 'http://localhost:10000',//代理地址,这里设置的地址会代替axios中设置的baseURL
           changeOrigin: true,// 如果接口跨域,需要进行这个参数配置
           //ws: true, // proxy websockets
           //pathRewrite方法重写url
           pathRewrite: {
               '^/api': '/' 
               //pathRewrite: {'^/api': '/'} 重写之后url为 http://192.168.1.16:8085/xxxx
               //pathRewrite: {'^/api': '/api'} 重写之后url为 http://192.168.1.16:8085/api/xxxx
          }
   }}
},

上面的配置就是我在vue.config.js里面配置的,然后他不起作用,找遍全网,没找到解决办法,思想盯在了vue设置代理无效,axios设置拦截器跨域这两个问题上。一直在找…




就在早上看到了一篇文章,https://bbs.csdn.net/topics/395553952,然后去试着改了,发现成功了。

总结:
排查的时候需要以下注意点:

  1. 注意每个版本不同
  2. 找官方的使用方法
  3. 找网上的使用例子
  4. 如果结构一致,那就从细枝末节开始对比(比如这里的target,他的值应该怎么写)

疑问:
我成功测试之后发现axios的拦截器设置了token,然后打印了config;

请求的接口是http://localhost:8080/api/article/articleType

从发起请求,在前端最后经过处理的是代理?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:14:27  更:2022-04-09 18:17:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:05:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码