解决后端无法对前端的ajax请求重定向

这篇具有很好参考价值的文章主要介绍了解决后端无法对前端的ajax请求重定向。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章目录:

  • 问题描述
    • AJAX请求后端直接重定向失败
  • 解决方案
    • 后端拦截请为响应头添加重定向标志
    • 后端拦截器为响应头添加重定向路径
    • 前端响应拦截器获取响应头数据,并通过location.href = url 完成页面跳转

一、问题描述

本来想在拦截器里设置未登录用户访问指定接口时,跳转到登录页面。

ajax 重定向页面跳转,异常,VUE,前端,http,vue.js,spring

结果发现前端请求到的res如下图所示,只返回了登录页的样式,并没有完成浏览跳转

ajax 重定向页面跳转,异常,VUE,前端,http,vue.js,spring  

通过查阅资料了解:ajax是一种异步http请求方式,它可以在不刷新页面的情况下向后台发送请求并获取响应数据,但是它不能自动进行页面重定向。


二、解决方案 

修改拦截器逻辑,未登录用户不直接重定向登录页面。

当未登录用户访问指定接口时,在响应头里添加“我要重定向”的标志并且添加重定向后的地址返回给前端,前端请求接口后,搜寻到"我要重定向"标志后,拿着对应的地址去完成页面跳转即可。

拦截器代码:

ajax 重定向页面跳转,异常,VUE,前端,http,vue.js,spring

前端请求后的获取的响应头:

ajax 重定向页面跳转,异常,VUE,前端,http,vue.js,spring 

在axios的响应拦截器内判断响应头:

ajax 重定向页面跳转,异常,VUE,前端,http,vue.js,spring

axios.interceptors.response.use(function (response) {
    // 判断响应头内是否有重定向标志
  if(response.headers.redirect == null){
    return response.data
  } else {
    //响应头内的重定向地址
    location.href = response.headers.redirecturl
  }
  if (!response.data.success) {
    return Promise.reject(response.data.errorMsg)
  }
  return response.data;
}

 如此,通过前端的location.href即可完成页面的重定向


总结: 

  • 后端拦截请为响应头添加重定向标志
  • 后端拦截器为响应头添加重定向路径
  • 前端响应拦截器获取响应头数据,并通过location.href = url 完成页面跳转

 文章来源地址https://www.toymoban.com/news/detail-609514.html

 

 

到了这里,关于解决后端无法对前端的ajax请求重定向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • response.sendRedirect()实现重定向(页面跳转)

    在某些情况下,针对客户端的请求,一个 Servlet 类可能无法完成全部工作。这时,可以使用请求重定向完成这一工作。 请求重定向指 Web 服务器接收到客户端的请求后,可能由于某些条件的限制,不能访问当前请求 URL 所指向的 Web 资源,而是指定了一个新的资源路径,让客户

    2023年04月22日
    浏览(73)
  • 解决前后端分离项目后端设置响应头前端无法获取

    在开发前后端分离项目中出现后端设置响应头,前端一直无法获取等问题。 后端设置响应头代码如下 在浏览器中我们是可以看到设置的响应头 Content-Disposition 属性,但是在前端接收到的响应信息中却看不到我们设置的 Content-Disposition 属性。 原来在前后端分离的项目中除了需

    2024年02月04日
    浏览(61)
  • H5跳回小程序的wx.miniProgram.navigateTo不起效果,无法跳转页面,已解决

     需求:H5中的点击首页按钮跳回小程序的首页,就写了以下代码    结果并没有跳转成功,但是alert成功,于是查找资料,换了各种api比如switchTab,redirectTo都不行,找了好多博主的帖子发现都不行,问题肯定出在url上面,于是改成下面这样,就可以成功跳转了,不得不说啊

    2024年02月11日
    浏览(50)
  • vue2前端使用axios发起post请求,后端(springboot)拿不到值解决办法

    axios封装-我常用的请求头参数  application/json; charset=utf-8 页面登录请求-post 网络请求正常传入参数 后端代码,查看控制台发现都为null,没取到值。 1.尝试将前端post请求改成get,其他都不用变 发现正常取到值,打印输出正常。前端页面正常跳转。 2.后端设置为post请求,前端a

    2024年02月02日
    浏览(46)
  • 微信小程序webview跳转页面后没有返回按钮以及变向解决H5安卓无法监听popstate问题

    做了一个app跳转到小程序关注公众号的需求,小程序里面用webview嵌套公众号的H5。 做完我发现左上角它没!有!返!回!键! 然后!我查了好多资料用过双页面跳转让左上角有返回键,但是吧,它确实是有返回键了但是没办法返回到小程序 ,只是在H5内不停的返回在跳转回

    2024年04月12日
    浏览(47)
  • ajax中的和后端交互的put、patch、delete请求

    1、向后端发送一个put请求,请求修改数据: 重点:修改谁、修改成什么: 修改谁:修改user下第一个: user内容: 修改成什么:修改成“username=hhhpassword=575” 完整代码:(只复制了body里面的代码)  结果: json原来的内容: json文件内容的变化: user内容变化:   2、向后端

    2024年02月06日
    浏览(68)
  • 【异常解决】vue项目localhost:8080无法访问此网站或者无法访问此页面,localhost拒绝了我们的连接请求

    前端页面使用的是vue,vue项目启动成功,没有任何报错,服务控制台已出现APP访问地址,如下图所示: 点击访问地址,浏览器打开后页面先是空白,然后过了一会儿显示无法访问此网站,localhost拒绝了我们的连接请求页面,信息如下: 出现此问题的原因有以下几种:请挨个

    2023年04月25日
    浏览(68)
  • vue3+elementPlus登录向后端服务器发起数据请求Ajax

    后端的url登录接口 先修改main.js文件 login.vue 此时前端有跨域问题 先配置跨域 vue.config.js  项目中如果没有这个文件 请自行创建。 此时可以看到跳转到登录到home页面  完整的后端登录方法  消息提示使用elementPlus 的Elmessage 

    2024年01月18日
    浏览(41)
  • 前端开发中的ajax请求、axios封装

    目录 浏览器http请求 同步 js标签跨域、url 异步ajax、websock协议 ajax是异步的技术术语,最早的api是xhr(XMLHttpRequest) fetch es6 api axios 封装axios(无论用requst还是axios请求都会生效) src/utils/request.ts请求/响应拦截器封装 ts post请求request.post(url)和 通用请求request({url,method:\\\'post\\\'})对象

    2024年02月11日
    浏览(48)
  • 前端如何中断请求 ( axios、原生 ajax、fetch)

    使用场景 在前端开发中,我们经常需要中断请求来优化性能或处理特定的业务需求。以下是一些常见的使用场景: 比如 重复请求:当页面中多个组件并发调用同一个接口时,在第一个请求返回后,我们可能需要中断其他组件对该接口的调用,以避免重复请求和冗余数据。这

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包