java - 调试一个非常难以重现的 Java Web 应用程序问题(前端)

标签 java css nginx tomcat7 internet-explorer-11

我有一个 Java 网络应用程序作为 WAR 部署到 Tomcat 7.0.41 (myapp.war)。我注意到,当我将 WAR 部署到位于我们网络一部分的 Tomcat 时,网页显示得非常好。但是,这只发生在 IE 11 中,如果我采用完全相同的 WAR 并将其部署到位于我们网络另一部分的 Tomcat 服务器的完全相同版本/Chef 配置实例,页面样式看起来会大不相同完全错误。同样,这特定于 IE11 和应用程序在网络中的位置。如果我从网络上的“良好”位置转到 IE 11 中的应用程序,前端呈现得非常好。或者,如果我从网络上的“不良”位置查看应用程序,但在非 IE 浏览器中,一切都很好。

我觉得我们可能有一些 IT 代理(nginx 等)阻止 Tomcat 提供某些 CSS/JS 文件,因此最终结果是一个部分完整的前端,在浏览器中看起来很不稳定.而且不知何故,这只出现在 IE 11 中。

我已经(有点)通过查看我所有的 HTML、JS 和 CSS 文件的源并将它们复制到本地文件夹中的文件来确认这一点。然后,我在浏览器中(在本地)打开其中一个 HTML 文件,网站显示完美。

这里的问题是我的 JS 文件使用了一堆开源的 JS 库。这些库依赖于其他库。依此类推,依赖图非常庞大。我很难判断哪些文件未正确/完整下载。

最重要的是:如果我将 html5shiv 添加到我的应用程序中,那么问题就会完全消失,无论是哪种浏览器(IE 或非 IE)或我选择的网络位置。但是,添加 html5shiv 会破坏我的应用程序中的其他内容,并且由于超出此问题上下文的原因,无法使用。

有人知道我该如何解决/解决这个问题吗?为什么这只会影响 IE 11 而不会影响其他浏览器?为什么 html5shiv 可以解决这个问题?!?

最佳答案

您需要开始使用 Wireshark .

它的作用是捕获所有网络流量,并允许您准确查看网卡发送/接收的流量。

我会做的是在您访问有问题的网页时捕获您的计算机和工作位置的服务器之间发生的完整流量。然后对不工作的服务器重复该操作。

然后您将获得完整的流量并可以并排比较它们。即使它没有告诉您问题的原因,Wireshark 也会告诉您两个不同服务器发送的数据包中出现差异的位置。

您也可以通过运行 TCPDump(使用类似 tcpdump -i eth0 -w file.cap -s 0 的命令来获取完整的数据包,而不仅仅是第一个 X bytes),抓取发送的数据包,然后在Wireshark中查看抓包结果。

"Does Wireshark offer such file-level abstractions or is it all nitty-gritty, byte-level output I need to read?"

两者兼而有之。基本上,一旦您拥有面前的流,您就可以通过在数据包中查找 GET 条目来查看各个请求。

enter image description here

一旦您确定了文件的起始位置,您可以右键单击该数据包,选择跟随 TCP 流,它将为您提供该 TCP 流的摘要 View :

enter image description here

如果您需要文件之间的详细差异,它会在那里......但它可能会很明显,比如文件被完全截断或损坏,而不是一个或两个字节出错的文件。

关于java - 调试一个非常难以重现的 Java Web 应用程序问题(前端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495611/

相关文章:

java - java中的ClassCastException和奇怪的编译问题

java - 使用 Oauth2.0/OpenId 混合验证 Android 应用程序和 Web 应用程序(后端服务器)

java - iText 7 : Set text field once even if it exists multiple times with the same name

javascript - CSS 背景图片,加载后淡入淡出

angularjs - 使用 Angular 选择时的条件 ng-options

Nginx 301 将所有非主页 url 重定向到主页

nginx - nginx.conf 中的正确代理路径

java - BigDecimal 变得四舍五入..但我不想要任何四舍五入

css - Transform Translate Chrome Bug 不透明度转换

regex - Nginx:如何向 URL 添加尾部斜杠,除非它以特定名称开头