HTML Iframe嵌入Jenkins报告:解决相对路径引发的404错误

HTML Iframe嵌入Jenkins报告:解决相对路径引发的404错误

本教程旨在解决在jenkins环境中,html页面通过iframe嵌入团队报告时,因web服务器对相对路径解析不当而导致的404错误。文章深入分析了问题根源,并提供了采用完全限定url(绝对路径)作为解决方案,同时探讨了jenkins报告发布的最佳实践,以确保资源正确加载并提升系统稳定性。

问题背景与现象

在持续集成/持续部署(CI/CD)流程中,我们常会遇到需要整合不同报告或视图的需求。一个典型场景是,团队的Jenkins工具生成了多个HTML格式的硬件仿真测试报告(例如Session_20Data_20for_20Overview_20Report/index.html和Runs_20Data_20for_20Overview_20Report/index.html)。为了方便团队成员在一个页面中集中查看这些报告,通常会创建一个父级HTML页面(如overview.html),并利用

初始的overview.html结构可能如下所示,其中src属性使用了相对路径:

         回归报告                        

这种设置在某些环境下(例如直接在文件系统上打开overview.html,或在特定的Linux环境)可能工作正常。然而,在某些情况下(例如在Windows环境,或通过Jenkins的内置Web服务器提供服务时),Iframe区域却无法正常显示内容,而是抛出HTTP ERROR 404 Not Found错误,具体的URI路径显示为/static-files/Session_20Data_20for_20Overview_20Report/index.html等。尽管文件结构和相对路径看似正确,但服务器端却无法找到这些资源。

404错误根源分析

这个404错误的核心在于Web服务器(在本例中,Jenkins通常使用内置的Jetty服务器和Stapler Servlet来提供服务)如何解析和处理HTML页面中的相对路径。

立即学习“前端免费学习笔记(深入)”;

文件系统与Web服务器的路径解析差异:当您直接在浏览器中打开本地文件系统中的overview.html时(例如file:///C:/path/to/Overview/overview.html),浏览器会根据overview.html的物理位置来解析../这样的相对路径,从而准确找到同级目录下的报告文件。然而,当overview.html通过Web服务器(如Jenkins)提供服务时,浏览器请求的是一个URL(例如http://your-jenkins-instance/job/your-job/ws/Overview/overview.html)。此时,

服务器的静态资源映射:错误信息中出现的URI: /static-files/Session_20Data_20for_20Overview_20Report/index.html以及SERVLET: Stapler和Powered by Jetty,强烈暗示Jenkins的Web服务器在尝试解析这些相对路径时,可能将其映射到了一个预设的静态文件服务路径或上下文根。/static-files/前缀表明服务器尝试从其内部配置的静态资源目录中查找这些文件,而不是从Jenkins工作区的相对路径中。由于报告文件并未被Jenkins配置为从/static-files/路径下提供,因此导致了404错误。

简而言之,问题出在服务器端对overview.html中

解决方案:采用完全限定URL

解决此类问题的最直接和最可靠的方法是,将

原理:完全限定URL明确指定了资源的精确网络位置,它不依赖于当前页面的URL或服务器的路径解析逻辑。无论父页面在何处被提供,浏览器都能直接通过这个完整的URL向服务器请求资源,从而避免了相对路径可能带来的歧义和解析错误。

如何获取完全限定URL:

在Jenkins中,找到并直接导航到您想要嵌入的报告页面。例如,找到Jenkins工作区中生成的Session_20Data_20for_20Overview_20Report/index.html。在浏览器中打开这个报告文件。复制浏览器地址栏中显示的完整URL。这个URL通常会包含Jenkins实例的地址、任务名称、工作区路径等信息,例如:http://your-jenkins-instance:port/job/your-job-name/ws/Session_20Data_20for_20Overview_20Report/index.html或http://your-jenkins-instance:port/jenkins/job/your-job-name/ws/Session_20Data_20for_20Overview_20Report/index.html (如果Jenkins部署在/jenkins上下文路径下)

示例代码:

将overview.html中的

         回归报告                        

重要提示: 请务必将示例中的http://your-jenkins-instance:port/job/your-job-name/ws/替换为您的Jenkins实例的实际URL前缀。

Jenkins报告的最佳实践与注意事项

除了使用完全限定URL解决当前问题外,还有一些关于在Jenkins中处理报告的最佳实践和注意事项值得关注:

跨域安全警告 (CORS):在原始问题描述中提到了一个警告:“Due to Cross Origin Request Security(CORS), this browsing mode is now deprecated.”。虽然CORS不是导致404错误的直接原因(404是资源未找到,CORS是找到但拒绝访问),但它是一个重要的安全考虑。如果您的Iframe内容(报告)和父页面(overview.html)最终被部署在不同的域名、端口或协议下,浏览器可能会因为CORS策略而阻止Iframe内容的加载。使用完全限定URL时,如果URL指向的资源与父页面同源,则通常不会遇到CORS问题。如果不同源,则需要服务器端(Jenkins)配置CORS头来允许跨域访问。

利用Jenkins的HTML Publisher Plugin:Jenkins官方推荐的做法是使用插件来发布HTML报告,例如HTML Publisher Plugin。这个插件允许您指定Jenkins作业生成的HTML报告的路径,然后Jenkins会自动将这些报告发布为作业构建结果的一部分。通过这种方式发布的报告,Jenkins会负责正确地提供这些文件,并生成稳定的、可访问的URL。这不仅能解决路径解析问题,还能更好地集成到Jenkins的UI中,并可能提供更好的安全控制。

优点:

Jenkins负责路径解析,避免手动处理URL。报告与构建结果关联,便于追踪。可能提供更好的安全性和访问控制。符合Jenkins的推荐实践,避免“浏览模式已弃用”的警告。

使用方法概述:在Jenkins作业配置的“构建后操作”中,添加“Publish HTML reports”,然后指定HTML报告的目录和入口文件(例如index.html)。插件会自动生成一个指向这些报告的链接。

动态URL管理:如果您的Jenkins任务名称、实例地址或工作区路径经常变化,硬编码完全限定URL可能不够灵活。在这种情况下,可以考虑在生成overview.html时,利用Jenkins的环境变量(如BUILD_URL, JOB_URL, WORKSPACE等)来动态构建Iframe的src属性。例如,在Groovy脚本或Shell脚本中生成HTML内容时,可以插入这些变量。

总结

在Web服务器环境下(尤其是像Jenkins这样的CI/CD工具),理解路径解析机制至关重要。当

更进一步,对于Jenkins环境中的HTML报告,强烈建议利用HTML Publisher Plugin等官方推荐的工具来发布和管理报告。这不仅能解决当前的路径问题,还能提供更稳定、安全和集成的报告查看体验,符合现代Web开发的最佳实践。

以上就是HTML Iframe嵌入Jenkins报告:解决相对路径引发的404错误的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1584293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTML视频怎么设置初始播放时间_currentTime属性设置视频开始位置
上一篇 2025年12月23日 00:45:18
html视频object-fit怎么用_html视频填充模式调整
下一篇 2025年12月23日 00:45:35

相关推荐

  • Linux如何使用tail命令?

    linux  tail命令显示一个或多个文件或管道数据的最后一部分(默认为10行);可用于实时监控文件更改。下面本篇文章就来就来给大家介绍一下如何使用linux tail命令,希望对大家有所帮助。 Linux tail命令 tail命令显示一个或多个文件或管道数据的最后一部分(默认为10行);可用于…

    2026年8月31日
    000
  • win10重装系统其他盘的东西还在吗win10重装系统其他盘会…

    一、所需工具 在开始重装系统之前,需要准备一些必要的工具。首先,准备一个U盘或光盘,用于制作系统启动盘。另外,建议提前备份其他分区中的重要资料,以防在安装过程中出现意外丢失。 二、解决方法 在重装系统时,可以选择不删除其他分区的数据。安装系统的过程中,系统会询问是否格式化其他分区,我们只需选择不进行…

    2026年8月31日
    000
  • win10夜间模式打不开怎么办_win10护眼夜间模式设置教程

    首先通过干净启动排除软件冲突,再使用DISM和SFC修复系统文件,最后重新安装显卡驱动程序以恢复夜间模式功能。 如果您尝试在Windows 10中启用夜间模式来减少蓝光对眼睛的刺激,但发现该功能无法打开或显示为灰色,这可能是由于系统服务冲突、驱动问题或系统文件损坏所致。以下是解决此问题的步骤: 本文…

    2026年8月31日
    800
  • 如何在Linux shell脚本中提示用户输入

    本篇文章给大家介绍关于如何在linux shell脚本中提示用户输入?下面来看具体的内容。 我们首先来看一下命令 # read var# read -s “Waiting for input: ” var 用途: read命令用于在Linux shell脚本中获取用户输入。带有读取命令的-p开关用于…

    2026年8月31日
    000
  • 如何用Flexbox和JavaScript实现父元素内子元素的两行排列及展开显示?

    如何利用Flexbox和JavaScript在一个父元素内实现子元素的两行排列,并支持点击展开显示全部内容? 本文将演示如何使用Flexbox和JavaScript,在一个父容器中将多个子元素排列成两行,初始状态隐藏超出部分,点击按钮后显示所有内容并启用水平滚动条。 关键在于巧妙地结合CSS的Fle…

    2026年8月31日
    000
  • 如何解决WordPress网站小工具管理问题?使用WP-CLI可以!

    可以通过一下地址学习composer:学习地址 在管理 wordpress 网站时,经常会遇到需要批量添加、移动或删除小工具的情况。手动操作不仅耗时,而且容易出错。最近,我在处理一个大型 wordpress 项目时,遇到了这样的问题,导致网站布局混乱,用户体验大打折扣。经过一番探索,我发现 wp-c…

    用户投稿 2026年8月31日
    000
  • b站视频怎么循环播放_B站视频单曲循环播放设置技巧

    B站视频循环播放可通过三种方式实现:一是使用App内播放器的循环功能,点击进度条右侧循环图标即可;二是通过第三方播放器如VLC导入视频链接并开启循环模式;三是PC端利用浏览器扩展插件如Global Speed,启用Loop Video选项实现自动重播。 如果您希望在观看B站视频时实现循环播放,以便重…

    2026年8月31日
    200
  • Win10系统提示此应用无法在你的电脑上运行怎么办?

    Win10系统提示此应用无法在你的电脑上运行怎么办?Win10系统提示此应用无法在你的电脑上运行怎么办?Win10系统提示此应用无法在你的电脑上运行怎么办?Win10系统提示此应用无法在你的电脑上运行怎么办?

    许多用户在使用windows 10系统时,可能会碰到系统弹出“此应用无法在你的设备上运行”的提示信息。通常来说,这种现象是由于电脑系统与软件之间存在兼容性问题所引起的。为了解决这个问题,我们可以尝试调整软件的兼容性设置。接下来就为大家介绍具体的处理步骤。 Windows 10提示此应用无法在你的电脑…

    2026年8月31日 用户投稿
    400
  • 如何解决PHP项目中的HTTP请求测试问题?使用php-http/mock-client可以!

    可以通过一下地址学习composer:学习地址 在开发php项目时,http请求的测试一直是个难题。直接在开发环境中发送请求不仅可能影响服务器性能,还可能导致数据泄露或其他安全问题。为了解决这个问题,我尝试了多种方法,最终找到了php-http/mock-client这个库。 php-http/mo…

    用户投稿 2026年8月31日
    100
  • win11系统自带杀毒软件误删文件怎么恢复 杀毒误报解决方案

    win11系统自带杀毒软件误删文件怎么恢复 杀毒误报解决方案win11系统自带杀毒软件误删文件怎么恢复 杀毒误报解决方案win11系统自带杀毒软件误删文件怎么恢复 杀毒误报解决方案win11系统自带杀毒软件误删文件怎么恢复 杀毒误报解决方案

    windows defender误删文件后,首先应检查隔离区并恢复文件,若未找到则使用数据恢复软件如recuva或easeus进行恢复。1. 打开“windows安全中心”→“病毒和威胁防护”→“威胁历史记录”→筛选“已隔离的威胁”并还原文件;2. 若未找到,使用recuva、easeus等工具恢复…

    2026年8月31日 用户投稿
    200
  • Linux中如何使用ls命令列出文件?(代码示例)

    ls命令是任何linux用户应该知道的基本命令之一;它用于列出有关文件系统中的文件和目录的信息。下面本篇文章就来带大家了解在linux中使用ls命令的方法,希望对大家有所帮助。 如何使用ls命令? ls命令的语法如下: ls [OPTIONS] [FILES] ls命令有许多[OPTIONS]选项,…

    2026年8月31日
    100
  • Win7系统ip地址冲突怎么办?

    Win7系统ip地址冲突怎么办?Win7系统ip地址冲突怎么办?Win7系统ip地址冲突怎么办?Win7系统ip地址冲突怎么办?

    在日常生活中,我们常常会遇到各种各样的问题,但即便如此,我们也应该认真对待并努力去解决这些问题。今天的文章将为大家介绍一种常见的电脑故障——“ip地址与网络上的其他系统有冲突”的错误提示,并提供详细的解决步骤,帮助大家自行处理这一问题。 这种错误通常发生在局域网内存在多台设备时,当某台设备的IP地址…

    2026年8月31日 用户投稿
    500
  • 如何解决WordPress数据导出问题?使用WP-CLI/export-command可以轻松搞定!

    可以通过一下地址学习composer:学习地址 在管理 wordpress 网站时,数据导出是一个常见但有时棘手的任务。最近,我在处理一个大型 wordpress 项目时,遇到了一个问题:需要按特定条件导出大量文章和评论。手动导出不仅耗时,而且容易出错。经过一番探索,我发现 wp-cli/expor…

    用户投稿 2026年8月31日
    100
  • Win7文件夹选项变灰色怎么办?文件夹选项是灰色的点击不了解决方法

    大家好,今天我们要聊一个比较常见的问题:为什么在Win7系统中,文件夹选项会变成灰色,并且无法点击?别着急,我会带大家一步步排查并提供解决办法。 首先,我们来了解一下这个问题产生的原因。最常见的因素可能是系统设置被更改了,比如误操作导致某些功能被禁用。此外,系统文件损坏或者病毒入侵也有可能造成这样的…

    2026年8月31日
    400
  • Tailwind CSS hocus 变体失效:为什么按钮焦点状态下样式不生效?

    Tailwind CSS hocus 变体失效排查:焦点样式覆盖问题 使用 Tailwind CSS 时,变体(variants)用于控制样式在不同状态下的应用。然而,有时变体可能失效,例如 hocus 变体在按钮获得焦点时样式不生效。本文分析一个实际案例,解释 hocus 变体未能正确应用样式的原…

    2026年8月31日
    200
  • 聊聊flink Table的Group Windows

    本文旨在探讨flink table的group windows。 Table table = input .window([Window w].as(“w”)) // 定义窗口并为其赋予别名 w .groupBy(“w”) // 按窗口 w 分组表 .select(“b.sum”); // 聚合Ta…

    2026年8月31日
    100
  • 微信怎么把手机里的视频发到朋友圈 微信通过“笔记”功能发布长视频

    可通过微信“笔记”功能发布最长60秒的视频,先将视频压缩为1080p/30fps内MP4格式,再从收藏中创建笔记插入视频并分享至朋友圈,以卡片形式展示突破30秒限制。 如果您想在微信朋友圈分享手机中的视频,但受限于时长或画质压缩问题,可以通过微信内置的“笔记”功能来发布更长时间的视频内容。以下是具体…

    2026年8月31日
    400
  • 如何使用Composer解决WordPress本地开发环境的搭建问题?wp-cli/server-command助你一臂之力

    可以通过一下地址学习composer:学习地址 在 wordpress 开发过程中,搭建一个本地开发环境是必不可少的步骤。然而,配置一个高效且易用的本地服务器常常会遇到各种问题,比如无法处理 .htaccess 文件或者配置复杂。最近,我在尝试搭建一个 wordpress 本地开发环境时,遇到了这些…

    用户投稿 2026年8月31日
    100
  • 如何解决PHP测试报告生成问题?使用AllurePHPCommons库可以!

    可以通过以下地址学习Composer:学习地址 在进行php项目开发时,测试报告的生成和管理是一个关键环节。最近,我在处理一个项目时遇到了一个棘手的问题:如何高效地生成详细且易于理解的测试报告。尝试了多种方法后,我发现allure php commons库能够完美解决这一问题。 Allure PHP…

    用户投稿 2026年8月31日
    400
  • 发布 ASP.NET Core 2.x 应用到 Ubuntu

    发布 ASP.NET Core 2.x 应用到 Ubuntu发布 ASP.NET Core 2.x 应用到 Ubuntu发布 ASP.NET Core 2.x 应用到 Ubuntu发布 ASP.NET Core 2.x 应用到 Ubuntu

    将asp.net core 2.x 应用发布到linux(ubuntu)服务器上时,通常采用kestrel作为服务器,因为它是跨平台的且高度优化。kestrel可以直接作为边缘服务器使用,但更推荐将其置于反向代理(如nginx)之后,以实现负载均衡和更好的扩展性。 在这种配置中,HTTPS请求首先到…

    2026年8月31日 用户投稿
    100

发表回复

登录后才能评论
关注微信