为什么 Js 无法从我的 Web 服务目录加载图像文件

Why can't Js load image files from my web service directory?

本文关键字:加载 图像 文件 服务 Web Js 我的 为什么      更新时间:2023-09-26

我有一个域www.foo.com,并希望在那里托管一个JAX-RS/Maven/Jersey Web服务。目前,我正在将 Java 代码打包到 .war 文件中,并将其部署到 Apache Tomcat 8.0 Web 服务器上,以便在我的本地计算机上进行测试。

/apache8/webapps/ROOT/index.htmllocalhost:8080/)中,我有脚本标记,XMLHttpRequest 对象在其中向localhost:8080/apiIndex/webapi/resource发出 get 请求 - 它搜索我的 Web 服务目录中包含 150 个左右图像的资源文件夹。这些图像的完整路径名将返回到我的 Js 代码中,并且 Js 代码尝试从中创建图像以绘制到画布上。

问题是,我收到一个网络错误,说 Js 找不到/加载图像。

如何将 index.html 文件从 Web 服务目录中映射到我的域,以便当我将请求从我的域转发到服务器的端口 8080 时,我可以从我的 Web 服务包中的代码访问这些图像?这是tomcat webapps文件夹中的Js代码无法从我的API的src/java/resources文件夹中加载图像的原因吗?

首先:/apache8/webapps/index.html听起来不像映射到localhost:8080的东西。我宁愿期望/(根)Web 应用程序部署在/apache8/webapps/ROOT(以及该文件夹中的索引.html文件)下。

我假设带有图像的Web应用程序部署在/apache8/webapps/apiIndex下。如果像您所说的那样生成图像的"完整路径名",则找不到:这些完整路径名是什么,您期望它们在哪里?您是否收到 404 错误代码或其他错误代码 - 例如 500?请在文件夹中发布URL和您的预期位置。

(这是作为答案而不是评论发布的,因为我希望最初的描述可以帮助您自己找到问题的根源,而第二部分实际上是在询问更多信息)

编辑:根据您的评论:恕我直言,您的网络服务应该返回对图像的http或https引用,而不是文件引用。如果有其他内容,您可能需要在它前面加上file:///home/...,以便浏览器考虑获取它。但是,如果您的浏览器显示 http 文档,出于安全原因,它甚至可能不会跨越该域并嵌入本地文件资源:为什么任何 Web 服务器都会在本地磁盘上引用材料?

将您的图像放在可以通过http引用它们的地方,问题应该得到解决。