windows - 如何使用 WebBroker (TIdHTTPWebBrokerBridge) 和 TWebModule 提供从 HTML 文件引用的文件
问题描述
我构建了微型 http 服务器 (Delphi 10.2) 以在线将一些计算返回给客户端。我使用了将 TPageProducer.HTMLFile 设置为本地文件的页面生成器。test.html文件引用了本地磁盘上的 css 文件,例如:在<link rel="stylesheet" href="data/style.css">
head 部分。它适用于 Firefox 样式化我的 html。
为了能够从本地文件夹中提供这个 css 文件,我处理了 WebModule.BeforeDispatch:
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
var
LocalPath: String;
begin
if Request.PathInfo.StartsWith('/data/') then
begin
LocalPath := DataPath + StringReplace(Request.PathInfo, '/', '\', [rfReplaceAll]);
if FileExists(LocalPath) then
begin
Response.ContentStream := TFileStream.Create(LocalPath, fmShareDenyWrite);
Assert(Response.ContentStream.Size > 0);
end;
Handled := True;
end;
end;
当我运行我的服务器并转到地址:http://localhost/data/style.css 时,我在浏览器窗口中获得了style.css文件的正确内容。
为什么在使用 http://localhost/test.html 之类的地址时,即使在 OnBeforeDispatch 中正确读取它,它也不用作我的 HTML 文件的样式?
似乎一个文件 (CSS) 是从另一个 (HTML) 引用的,这使事情变得混乱。
解决方案
推荐阅读
- riscv - 在 Ubuntu 20.10 上安装 RISCV 工具链时出错
- php - 带有 php 的 Opendir 失败
- php - 在 PHP 中生成访问令牌后如何获取用户电子邮件
- azure - 是否可以在 Azure 应用服务设置中使用 JSONPath
- spring-boot - spring-boot 无法获得具有安全和 http-only 的 hazelcast.sessionId cookie
- json - Jinja2 无法检索字典中键的值
- r - 使用 R 复制列中非空白值的标题
- python - 如何从 rdf 图打印部分结果并制作它的子集群
- javascript - Connect multiple Serialports from Arduino with NodeJs
- ionic-framework - Ionic 5 电容器 adMob 问题