在重新启动的 Tomcat 中刷新页面后,AJAX GET 请求出现在 URL 栏中

标签 ajax http tomcat browser get-request

我的网络应用程序在 Tomcat 下运行,它非常密集地使用 AJAX 请求,在开发过程中我也必须密集地重新部署网络应用程序。重新部署后,我通常会简单地刷新页面,知道用户 session 已删除,但我总是会遇到下面描述的场景:

  1. 转到某个页面,一个真正大页面,其中包含许多 JS 脚本,这实际上会发出那些密集的 AJAX 请求。
  2. 停止 Tomcat 或重新部署网络应用。
  3. 刷新页面。
  4. 在登录表单中输入凭据以进行身份​​验证。
  5. 突然在浏览器窗口中获取最后 AJAX 请求响应,在 URL 栏中获取 AJAX 请求 URL。

哇...我觉得很奇怪,AJAX 请求 URL 连同它们在网页显示区域中的响应一起出现在 URL 栏中。这实际上发生在 Firefox 和 Chrome 上(尚未在其他浏览器中测试过)。不幸的是,我无法在从头开始编写的简单页面中重现相同的行为。坦率地说,我真的不明白如果用户在 URL 栏中输入 AJAX 请求/响应,这些请求会发生什么以及为什么浏览器会“思考”...

非常非常感谢您对这种奇怪行为的可能解释或提示。谢谢!

(也许它可以提供帮助:所有 AJAX 请求均使用 jQuery 1.4.2 执行)

最佳答案

非常抱歉,后来才明白,问题不完整,因为还有一个坑我没说,所以原则上没有人不能回答问题。错误的原因隐藏在... <body onunload="...">标签定义。这是非常出乎意料的,但是该代码包含一些 AJAX 请求,当用户离开页面时必须调用这些请求。我只意识到认证模块( FORMj_security_check )返回了一个包含 Location 的响应(HTTP 302) header - 所以这就是 为什么 浏览器进行重定向的原因。

具体情况是这样的:

  • 打开包含 <body onunload="some_ajax_here"> 的页面.
  • 使用另一个选项卡退出应用程序,以便您可以留在同一页面。
  • 刷新页面以便调用 一些 ajax - 此 AJAX 请求现在是允许的,因为它是应用程序的安全部分(您获得登录页面)。
  • 输入凭据,现在哎呀,您会直接在浏览器窗口中看到 一些 ajax 的结果。

作为快速修复,我希望是最后一个,我在 AJAX 请求之后添加了另一个请求:

$.ajax({
    async: true,
    method: "GET",
    url: document.location.pathname + document.location.search
});

因此 HTML 页面脚本只是将自页面请求放在最后一个 - j_security_check返回 Location引用上次使用的 HTML 页面,重定向工作正常。也许我的解释不够清楚,可能不完整甚至错误百出,但总的来说就是这样。再次感到非常抱歉,谢谢@ChristopherSchultz!

关于在重新启动的 Tomcat 中刷新页面后,AJAX GET 请求出现在 URL 栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11742104/

相关文章:

java - log4j 干扰 - 级别一直设置为 "OFF"

javascript - ajax:如何从数据库获取数据到html?

javascript - jPages 无法识别使用 jQuery 动态添加的图像

c++ - 如何使用Mongoose(一个http服务器)来服务不同的请求?

php - 如何在没有 PECL_HTTP 或 CURL 的情况下在 PHP 中执行 http get 请求

tomcat - 如何在 Tomcat 6 中从 SSL 恢复为非 SSL?

tomcat - tomcat启动时出现套接字绑定(bind)异常

php - 在不刷新/离开页面的情况下更新记录

ajax - 单击按钮更改事件选项卡

linux - 如何使用 curl 将浮点值作为查询参数传递?