用ajax请求,在后台使用Response.sendRedirect(“XXX”)重定向无效

您所在的位置:网站首页 response重定向跨域 用ajax请求,在后台使用Response.sendRedirect(“XXX”)重定向无效

用ajax请求,在后台使用Response.sendRedirect(“XXX”)重定向无效

2024-07-11 08:58| 来源: 网络整理| 查看: 265

问题:

今天发现,当使用Ajax请求时,如果后台进行重定向到其他页面时是无法成功的,只能在浏览器地址栏输入才能够实现重定向。

原因:

Ajax默认就是不支持重定向的,它是局部刷新,不重新加载页面。

解决:

在后端的逻辑里面加上如下:

httpResponse.addHeader("REDIRECT", "REDIRECT");//告诉ajax这是重定向 httpResponse.addHeader("CONTEXTPATH", tokenUrl);//重定向地址

在前端的逻辑里面加上如下:

$.ajaxSetup({ complete : function(XMLHttpRequest, textStatus) { // 通过XMLHttpRequest取得响应头,REDIRECT var redirect = XMLHttpRequest.getResponseHeader("REDIRECT");//若HEADER中含有REDIRECT说明后端想重定向 alert(redirect); if (redirect == "REDIRECT") { var win = window; while (win != win.top){ win = win.top; } win.location.href= XMLHttpRequest.getResponseHeader("CONTEXTPATH"); } } }); 注意:

XMLHttpRequest.getResponseHeader(“XXX”),通过CORS方式解决的ajax跨域,是获取不到请求头的。getResponseHeader的值一直为空。 要通过Access-Control-Expose-Headers来设置响应头的白名单。 httpResponse.addHeader(“Access-Control-Expose-Headers”, “REDIRECT,CONTEXTPATH”);将想要传递的字段设置一下。才能获取到值。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3