axios响应拦截器无法显示响应头问题
Access-Control-Expose-Headers 响应报头、跨域 公开响应头
问题现象: 前端无法获取响应头 Response Header 原因
问题原因:跨域问题 启用跨域请求(CORS)
前后端分离的项目,前端地址与后端地址不同,出现了跨域问题,因此 前端人员拿取不到后端返回的Response.headers.自定义的响应头 “X-Check-Submit-Repeat”(只能拿到默认的标头)
在使用CORS方式跨域时,浏览器只会返回 默认的头部 Header,认情况下可用的响应头包括:
Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma
CORS规范将这些头称为 简单响应头 。要使用其他头可用于应用,请调用 WithExposedHeaders(String[]) 方法,设置 公开 (后端代码可看下方链接)。
这样响应头就会显示 Access-Control-Expose-Headers :…自定义头…
接着前端就能拿到里面的自定义响应头了。
Access-Control-Expose-Headers响应报头
简介
Access-Control-Expose-Headers 响应报头 指示哪些报头可以 公开 为通过列出他们的名字的响应的一部分
默认情况下,只显示6个简单的响应头,在上方也有介绍。
如果你想要客户端能够访问其他的请求头,则必须使用Access-Control-Expose-Headers 列出他们。
res.header("Authorization", token)
res.setHeader("Access-Control-Expose-Headers", "Authorization")
这里的setHeader和直接写header都是一样的,写setHeader和header都可以实现,还有就是这两行代码不需要管先后顺序
axios响应拦截器无法显示响应头问题的更多相关文章
- axios请求响应拦截器的应用
什么是axios拦截器? 一般在使用axios时,会用到拦截器的功能,一般分为两种:请求拦截器.响应拦截器. 请求拦截器在请求发送前进行必要操作处理 例如添加统一cookie.请求体加验证.设置请求头 ...
- vue axios请求/响应拦截器
// main.js中配置 // 引入 axios import Axios from 'axios' // 这时候如果在其它的组件中,是无法使用 axios 命令的. // 但如果将 axios 改 ...
- 快速了解AngularJs HTTP响应拦截器
任何时候,如果我们想要为请求添加全局功能,例如身份认证.错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段. angularJs通过拦截器提供了一个从全局层面进行处理的途 ...
- [代码笔记]VUE路由根据返回状态判断添加响应拦截器
//返回状态判断(添加响应拦截器) Axios.interceptors.response.use( res => { //对响应数据做些事 if (res.data && !r ...
- 【转】AngularJs HTTP请求响应拦截器
任何时候,如果我们想要为请求添加全局功能,例如身份认证.错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段. angularJs通过拦截器提供了一个从全局层面进行处理的途 ...
- AngularJs HTTP响应拦截器实现登陆、权限校验
$httpAngularJS 的 $http 服务允许我们通过发送 HTTP 请求方式与后台进行通信.在某些情况下,我们希望可以俘获所有的请求,并且在将其发送到服务端之前进行操作.还有一些情况是,我们 ...
- axios请求,拦截器的使用
1. axios 创建请求 import axios from 'axios' import {Message} from 'element-ui' import router from " ...
- Axios使用拦截器全局处理请求重试
Axios拦截器 Axios提供了拦截器的接口,让我们能够全局处理请求和响应.Axios拦截器会在Promise的then和catch调用前拦截到. 请求拦截示例 axios.interceptors ...
- axios 基于拦截器的取消(重复)请求
axios 基于拦截器的取消(重复)请求 // 添加请求拦截器 axios.interceptors.request.use((config) => { // 准备发请求之前, 取消未完成的请求 ...
- axios的拦截器(Interceptors)
axios 的拦截器:interceptors 如果我们想在请求之前做点什么,用拦截器再好不过了 拦截器一般做什么? 1. 修改请求头的一些配置项 2. 给请求的过程添加一些请求的图标 3. 给请求添 ...
随机推荐
- 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新页面、录制、页面对象模式操作
写在前面 关于Playwright系列的文章,真的很久没有写了,今天一个不小心官方API部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习. API部分 多线程 直白点说就是多线程下Pla ...
- 【WinForm】窗体之间传值的几种方式
方法1:设置公共静态变量传值 eg: 1 public partial class mianForm 2 { 3 //声明i 为公共静态变量 4 public static string i = &q ...
- Fiegn 声明式接口调用
五:Fiegn 声明式接口调用 什么是Fiegn Netfix,Fiegn 是一个提供模板式的Web Service客户端,使用Fiegn 可以简化Web Service 客户端的编写,开发者可以通过 ...
- Vue3 组件之间的数据传递
1.组件分为:页面级组件和功能组件
- CCRD_TOC_2015_EULAR专刊第二辑
中信国健风湿免疫临床通讯 EULAR2015专刊第2辑●目录 类风湿关节炎专题 ■ RA放射学进展的预测 OP0070 滑膜HIF-1a与RA关节破坏 THU0085 24周SDAI缓解能否预测R ...
- 创建微信小程序组件的步骤
创建组件 新建目录 一个组件由四部分组成,js.json.wxml.wxss,组件其实就是页面中被拆分出来的,可以在多个页面中共同使用的小块 UI,所以看起来和新建一个页面的四个文件一样: 引入组件 ...
- PostgreSQL TOAST技术解析
一.TOAST是什么? TOAST是"The Oversized-Attribute Storage Technique"(超尺寸字段存储技术)的缩写,主要用于存储一个大字段的值. ...
- Docker 安装mysql8
1.获取镜像 docker pull mysql:8 2.创建数据卷 必须创建数据卷,不然容器挂了数据就丢了 docker volume create mysql-data #创建docker vol ...
- Oracle & MSSql 数据库表映射方法(dblink or other)
一.Oracle 1.在旧库创建公共链接 命名为 bidblink create public database link bidblink connect to c##v26_xxxx IDENTI ...
- Docker 架构演进之路
转载:https://developer.aliyun.com/article/673009 前言 Docker已经推出了5年,在这5年中它极大的改变了互联网产品的架构,推进了新的产品开发.测试和运维 ...