可以从通过file:// protocol打开的本地文件访问http(localhost或remote)提供的文件吗?反之亦然?如何实现?

时间:2016-04-15 12:41:30

标签: javascript jquery ajax apache cors

我有几个html文件(TiddlyWiki Classic实例)存储在USB记忆棒上(为了保持可移动性,我通过file://协议打开它们)。我使用Ajax(通过SharedTiddlersPlugin,但这并不是那么重要)将其中一些内容加载到其他内容中并且效果很好。

我还使用localhost设置了几个TW(WAMP @ Windows 10和一个名为MicroTiddlyServer的简单保存服务器,可以找到最新版本here)。但是"包括" (通过Ajax请求)从localhost到文件,从文件到localhost都不起作用。

所以,问题是可以使用哪种方式包含(使用JavaScript加载html的内容):

  1. 从文件到localhost?这意味着我在localhost上打开一个TW并在我的USB记忆棒上获取文件的内容(看起来像是一个很大的安全问题,所以它更有可能被禁止,至少使用Ajax,但可能在那里&# 39;一些解决方法),
  2. 从localhost到文件? (我的猜测是可以通过CORS实现,但将Header set Access-Control-Allow-Origin "*"添加到Apache <Directory ...>的{​​{1}}会阻止我的服务器(WAMP pack @ Windows 10)工作,将带有httpd.conf内容的.htaccess文件放入TW目录会导致Header set Access-Control-Allow-Origin "*"
  3. 从远程服务器到文件? (我想这不应该与2不同。除了我通常无法配置服务器,因为我不是管理员;但是因为我想使用TW作为RSS聚合器,让我在这里也包含这个;这也有助于包括我的智能手机上的TW和TWs可以从那里使用PHP服务器提供服务;包括智能手机上的TW需要localhost-&gt;远程服务器,但似乎也被禁止了)
  4. 我真的需要一些有用的例子(不一定是TW,只有html文件),因为我在所有这些CORS qe s ti o中丢失了n和教程(后者是关于http,而不是文件协议)。实际上,任何有效的解决方案(不一定是通过Ajax)都可以:

    • 除了节省时间外,我的USB记忆棒随时都可以移动
    • 服务器端部分也可以在Android上完成(PHP很好,Python也应该这样做,虽然我还没有对其进行测试),并且描述了服务器配置(好吧,{{3}在我的情况下碰巧不够清楚)
    • 包括遗留异步

    事实上,有this针对服务器进行了描述,但与Internal Server Error \n The server encountered an internal error or misconfiguration and was unable to complete your request.合作有些不同(没有配置服务器!)。

    这个问题的主要目的是了解我是否必须创建一个服务器,一旦插入就会在USB-stick上为TW服务,或者我可以在一个主要客户端实现所有3个目标 - 侧&#34;方式(通过file://协议打开TW)。但我也希望工作实例对其他人有所帮助,因为这个主题似乎记录不清。

1 个答案:

答案 0 :(得分:0)

出于明显的安全原因,不允许这种行为。

  

从文件到localhost?这意味着我在localhost上打开一个TW并在我的USB记忆棒上获取文件的内容(看起来像是一个很大的安全问题,所以它更有可能被禁止,至少使用Ajax,但可能在那里&# 39;一些解决方法),

不允许这样做,因为您无法在html Access-Control-Allow-Origin标记中使用meta

  

从localhost到文件?

     

从远程服务器到文件?

实际上,它是相同的,那是一个网络服务器,所以它是相同的机制。由于没有服务器会使用Access-Control-Allow-Origin标头回复,因此您无法访问file://网址。

  

是的,从服务器访问文件肯定是一个安全问题,但为什么从文件服务的html访问服务器是一个问题?

如果您可以这样做,只需双击文件浏览器中的file.html即可将整个硬盘驱动器发送到网络上任何位置......

访问您的内容的唯一方法是提供服务,抱歉。