使用CSS / JS将HTML文件从服务器磁盘呈现并提供给客户端浏览器

问题描述 投票:0回答:1

简单地说,就是[

APPLICATIONS

    前端Web应用程序是使用React JS创建的(确切地说是反应管理员)。
  1. 使用Net core 3.1设置处理Rest API请求的后端
  2. 两个应用程序都托管在Windows服务器的IIS中(作为IIS中默认网站内的应用程序服务。)>
  3. CONSTRAINTS

    应用程序的托管必须仅在Windows服务器中的IIS内部进行。 (也欢迎其他选项)
  1. 后端/前端可以根据需要使用任何语言。 (最好是点网核心,因为我过去十年一直在使用c#)
  2. 技术细节

我正在开发主机点云查看器的解决方案(Potree,这是一个使用三个js开发的开源项目)。这是一个独立的过程。 Potree提供了一个基于桌面的C ++转换器,该转换器将输入转换为网页(带有html,css,js)(

将其作为目标文件调用

)。我们可以将该网页托管在任何服务器上,以供外部各方查看。

当前状态

  1. [正在工作:

    目标文件作为应用程序驻留在IIS服务器中,可以毫无问题地访问它。 (图像可以在下面看到)。
  • [正在工作:

  • 已构建react js Web应用程序,并且dist文件托管在IIS服务器中,也可以毫无问题地对其进行访问。
    经过两个步骤,确认两个已构建的应用程序都可以正常运行,因为它们可以单独托管,也可以从其他计算机访问。

    enter image description here

    我很喜欢的功能

      目标文件适用于不同的用户。因此,必须在通过API请求进行验证后再提供此服务。
    1. 当前设置是这样,当用户单击react应用程序中的链接时,它会进行REST Api调用,该调用由后端dotnet核心应用程序处理(可能还有其他更好的方法将html文件提供给前端网站应用)。
    2. 我尝试了几种方法来提供HTML文件。选项1:使用StaticFiles(在启动时)。我正在尝试从本地读取html文件,然后使用@Html.Raw(Model.SomePropertyName)
    3. 将其呈现在noidea.cshtml文件中

      // GET: /<controller>/ public IActionResult noidea() { try { var newmodel = new noideaModel(); var file = System.IO.File.ReadAllLines("./acl-i/acl-i.html"); newmodel._html = string.Join("", file); return View(newmodel); //return View(); } catch (Exception) { throw; } }

      }

      此选项可以部分正常工作,但问题是,由于我已将文件放入静态文件夹(在启动时配置),因此用户可以轻松地更改URL并访问那里的其他文件。

    enter image description here

    因此,我尝试使用选项2,即仅从本地磁盘读取html文件的内容并将其用作内容结果。:

    [AllowAnonymous] [HttpGet, Route("viewer")] public IActionResult getViewer() { //For serving single static html file. var file = System.IO.File.ReadAllLines("./acl-i/acl-i.html"); var item = string.Join("", file); return new ContentResult { ContentType = "text/html", StatusCode = (int)StatusCodes.Status200OK, Content = item }; }

    这里的成功点是,我能够正确进行身份验证,并且由于api端点为文件提供服务,因此用户无法更改URL。问题是我仅服务于HTMl,而链接的CSS,客户端浏览器无法识别js。下图显示了问题。 js和CSS也在同一api端点中搜索。

    enter image description here

    问题:

    我是新来响应js和Web前端开发的人。我主要使用Xamarin,用于桌面应用程序的C#/ WPF / XML和为CRUD应用程序开发Web API端点。所以,我完全被困在这里。不知道如何解决问题。

      我正在寻找解决当前问题的方法。
    1. 或找到一种解决问题的简便方法(我也看到了一些带有react js的express js示例,但目前尚不清楚,我也是新手。)
    2. 我只需要找到一种方法来对用户进行身份验证,然后为他提供完整呈现的html页面,以便在他的浏览器中查看(听起来很容易以这种方式进行解释

    ]任何帮助或指导/建议表示赞赏。
    我遇到一个问题,简单来说,就是找到一种方法来安全地呈现和提供HTML文件(以及CSS,JS)从服务器的本地磁盘到运行在客户端浏览器中的Web应用程序。 ...
    html reactjs asp.net-core asp.net-web-api react-admin
    1个回答
    0
    投票
    我尝试了其他方法来解决此问题。终于,我找到了解决方案。 (可能不是最好的,但对同样有类似问题的人可能会有帮助)。
    © www.soinside.com 2019 - 2024. All rights reserved.