JavaScript/jQuery回调到不支持可执行后端的服务器

JavaScript/jQuery回调到不支持可执行后端的服务器,javascript,jquery,webserver,Javascript,Jquery,Webserver,今天,一位同事问我,jQuery(或一般的JavaScript)是否可以ping回其源代码,并在不使用可执行代码的情况下获取有关文件系统的信息。我下意识的回答是,如果不使用AJAX、ASP.NET或其他一些可执行技术,IIS是不可能允许这种情况发生的。换句话说,从静态HTML页面运行的JavaScript无法从中提取有关它来自的Web服务器的信息 同样,这是下意识的回答,只是出于安全考虑,这是不可能的。。。但我并不声称自己是一位无所不知的JavaScript/jQuery专家,所以我向大家介绍了

今天,一位同事问我,jQuery(或一般的JavaScript)是否可以ping回其源代码,并在不使用可执行代码的情况下获取有关文件系统的信息。我下意识的回答是,如果不使用AJAX、ASP.NET或其他一些可执行技术,IIS是不可能允许这种情况发生的。换句话说,从静态HTML页面运行的JavaScript无法从中提取有关它来自的Web服务器的信息

同样,这是下意识的回答,只是出于安全考虑,这是不可能的。。。但我并不声称自己是一位无所不知的JavaScript/jQuery专家,所以我向大家介绍了这一点。如果您知道一种方法可以做到这一点,或者如果您确定这是不可能做到的,无论哪种方法,我都感谢您的反馈

多谢各位

-杰西·霍勒


到目前为止,解决方案都需要服务器端技术,ASP、ASP.NET、PHP、Web服务等。为了更好地说明问题,我将给出确切的场景

有一组10个HTML文件,都是静态的,只有HTML/CSS/JavaScript位于IIS Web服务器上的网站上。不允许使用ASP、ASP.NET、PHP和所有其他服务器端技术。这10个HTML文件的名称会发生变化,大小也会发生变化,等等。需要解决的问题是,在该时间点显示该目录中文件的相关信息(如果不启用目录浏览,我将添加)

  • 从IIS请求fileinfo.html
  • 浏览器包含fileinfo.html
  • html有JavaScript/jQuery,可以调用IIS来获取文件和大小信息
  • IIS向JavaScript/jQuery报告有关文件的信息

  • 如果不使用某种服务器端技术,我认为第3步是不可能的。但是,我只是想确保我没有听说过新的黑客行为。

    您所需要做的就是找到一种方法来包含Web服务器信息并将其粘贴到html文件中

    您可以使用cron作业用统计信息更新静态页面,也可以使用
    动态生成静态页面


    我可以专门为IIS说话,但Tomcat提供了一个状态xml提要,其中包含以下内容:

    您需要做的就是找到一种方法,将Web服务器信息包含在html文件中

    您可以使用cron作业用统计信息更新静态页面,也可以使用
    动态生成静态页面


    我可以专门为IIS说话,但Tomcat提供了一个状态xml提要,它将包括以下内容:

    在服务器上,您可以获得“关于文件系统的信息”,而无需设置代码来向您提供该信息,唯一的范围就是“关于文件系统的信息”URL路径和索引(如果可用)中隐含的信息。

    在服务器上不设置代码就可以获取“文件系统信息”的唯一范围是URL路径中隐含的“文件系统信息”,如果可用,还包括索引。

    编辑

    在你问题的第二部分所描述的特定场景中,我不得不说。我真的不明白你怎么能只用Javascript来确定服务器上的文件数量、大小和名称


    在前面,我说过您可以,只要您允许自己使用大多数浏览器Javascript实现中可用的对象,并且允许通过标识服务器上运行的服务器软件来推断某些文件系统信息(即,如果是IIS,则可能是NTFS,如果是Appache,则可能是ext3..等等)…无可否认,这不是一个完美的解决方案,充其量也不是一个黑客解决方案

    。特别是,请查看显示如何获取HTTP头的示例。从中,您只需向承载您的javascript文件的服务器发出请求,然后检查服务器头行,该行应告诉您承载您请求的文件的服务器。

    编辑

    在问题的第二部分中描述的特定场景中,我不得不说。我真的不明白如何仅使用Javascript来确定服务器上的文件数量、大小和名称


    在前面,我说过您可以,只要您允许自己使用大多数浏览器Javascript实现中可用的对象,并且允许通过标识服务器上运行的服务器软件来推断某些文件系统信息(即,如果是IIS,则可能是NTFS,如果是Appache,则可能是ext3..等等)…无可否认,这不是一个完美的解决方案,充其量也不是一个黑客解决方案


    。特别是,请查看显示如何获取HTTP头的示例。从中,您只需向承载您的javascript文件的服务器发出请求,然后检查服务器的头行,该行应告诉您承载您请求的文件的服务器。

    不,不可能le,除非Web服务器以某种方式发布此信息。正如您所说,需要在某个点运行可执行文件(发布静态信息或在请求时进行动态检查)。AJAX通过在后端具有URL来工作。如果没有URL来获取文件系统信息,则不可能


    上面的答案概述了如何在某一点上运行可执行代码来将信息发布到URL。我必须阅读两次问题,以确保提问者的观点是安全性而不是“如何”。不,除非Web服务器
    urls = ["/file1.html", "/file2.html", "..."]
    $.each(urls, function(url) {
      $.ajax(type: "HEAD", url: url, complete: function(data) {
        var headers = XMLHttpRequest.getAllResponseHeaders()
        # ...iterate over headers, using 'Content-Length', 'Content-Type', etc., 
        # to infer needed file information
      })
    })