gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:48:07 25 4
gpt4 key购买 nike

我的网络应用程序在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com