用ajax请求,在后台使用Response.sendRedirect(“XXX”)重定向无效 |
您所在的位置:网站首页 › response重定向跨域 › 用ajax请求,在后台使用Response.sendRedirect(“XXX”)重定向无效 |
问题:
今天发现,当使用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 |