我正在尝试使用Java套接字编程创建一个http服务器。
假设我正在从一个名为"web"的特定目录中提供静态文件(html,js,css等(。假设我在"web"中还有另一个目录"hello"。
当来自客户端或浏览器的请求为/hello 或/hello/时,我会显示保存在"hello"目录下的 index.html 文件。因此,让我们假设"hello"是上下文路径。
现在我的索引.html文件包含一个样式.css。所以来自客户端的请求分别是/hello 和/style.css,但这里我没有 style.css 文件的完整路径。
那么我怎么知道样式.css文件应该从"hello"目录提供呢?
如果文档是从/hello/
(带有尾部斜杠(提供的,并且引用了资源style.css
,浏览器将请求/hello/style.css
。服务器中不需要其他逻辑。
如果文档从/hello
提供(没有尾部斜杠(并引用资源style.css
,浏览器将请求/style.css
。与其在此地址提供文档,不如考虑将 HTTP 重定向提供给/hello/
,以解决资源命名问题并保持 URL 一致。
您也可以将资源引用为/hello/style.css
,完全避免该问题。