我是这里的ajax的新手,我知道有人已经遇到了这个问题。我有一个基于Spring
MVC构建的旧版应用程序,它有一个拦截器(过滤器),可以在没有会话时将用户重定向到登录页面。
public class SessionCheckerInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
// check if userInfo exist in session
User user = (User) session.getAttribute("user");
if (user == null) {
response.sendRedirect("login.htm");
return false;
}
return true;
}
}
对于非xmlhttp请求,这可以正常工作..但是,当我尝试在应用程序中使用ajax时,一切都变得很奇怪,它无法正确重定向到登录页面。作为检查的值
xhr.status = 200 textStatus = parseError errorThrown =“无效的JSON-我的HTML登录页的标记-
$(document).ready(function(){
jQuery.ajax({
type: "GET",
url: "populateData.htm",
dataType:"json",
data:"userId=SampleUser",
success:function(response){
//code here
},
error: function(xhr, textStatus, errorThrown) {
alert('Error! Status = ' + xhr.status);
}
});
});
我检查了萤火虫是否存在302 HTTP响应,但不确定如何捕获响应并将用户重定向到登录页面。有什么想法吗?谢谢。
jQuery是寻找一个 JSON 类型的搜索结果,但因为重定向自动处理,它将接收 生成的html源 你的login.htm
页面。
一种想法是通过将redirect
变量添加到结果对象并在JQuery中进行检查来让浏览器知道它应该重定向:
$(document).ready(function(){
jQuery.ajax({
type: "GET",
url: "populateData.htm",
dataType:"json",
data:"userId=SampleUser",
success:function(response){
if (response.redirect) {
window.location.href = response.redirect;
}
else {
// Process the expected results...
}
},
error: function(xhr, textStatus, errorThrown) {
alert('Error! Status = ' + xhr.status);
}
});
});
您还可以在响应中添加标头变量,然后让浏览器决定重定向的位置。在Java中,执行重定向而不是重定向,response.setHeader("REQUIRES_AUTH", "1")
而在JQuery中执行成功(!):
//....
success:function(response){
if (response.getResponseHeader('REQUIRES_AUTH') === '1'){
window.location.href = 'login.htm';
}
else {
// Process the expected results...
}
}
//....
希望能有所帮助。
问题内容: 我想使用PHP将所有www.domain.com请求重定向到domain.com,基本上是: 但是我确实想像SO中那样维护请求的URL,例如: 应该重定向到: 我不想依靠解决方案,并且我不确定要使用哪种变体来实现这一目标。同样,保留HTTPS协议将是一个加号。 我应该怎么做? 问题答案: 将用户重定向到完全相同的页面,www。完整。 因此,要摆脱www。,我们只需替换一行: 那应该起作
我有一个超文本标记语言登录页面,其中我有一个管理和用户的单选按钮,根据它,如果用户选择管理员,那么它应该重定向到管理员登录页面,如果他选择用户,那么它应该转到用户登录页面。 html登录页面如下: 用户的admin_login.php页面如下所示: 会话_start(); $email=$_POST["email"]; $psw=$_POST["psw"]; $name=“”; 包括db_conf
隐私设置->清除浏览数据(从时间开始) https/ssl->管理证书->删除所有项(包括证书) 检查没有书签。 Firefox也有类似的问题,但它的解决方案不适用于Chrome。有人对我能做些什么有什么建议吗?提前感谢您的帮助!
我正在使用Firefox,在设置服务器时,我一直在摆弄重定向。现在,Firefox已经缓存了从http://example.com/到https://example.com/和从http://sub.example.com/到https://sub.example.com/的301重定向。 我已经尝试了以下几件事: null 我的Firefox版本是38.0.1,我使用的是Windows8.1。我
重定向到一个 URL 。 使用 window.location.href 或 window.location.replace() 重定向到 url 。 传递第二个参数来模拟链接点击(true - 默认值)或HTTP重定向(false)。 const redirect = (url, asLink = true) => asLink ? (window.location.href = url)
问题内容: 我在cyberciti.biz的评论中看到了这个有趣的问题。 我发现我什至找不到在sh的单行命令中执行此操作的灵活方法。 到目前为止,我对解决方案的想法是: 但是您会看到,这不是同步的,而且致命的是,它是如此丑陋。 欢迎与您分享这个想法。:) 问题答案: 你要 这里的顺序很重要。假设stdin(fd 0),stdout(fd 1)和stderr(fd 2)最初都连接到tty,因此 首先