V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cat
V2EX  ›  问与答

chrome 浏览器能否让本地的 html 通过 ajax 加载本地文件?

  •  1
     
  •   cat · 2020-09-03 09:55:34 +08:00 · 2100 次点击
    这是一个创建于 1574 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有一个 index.html 文件,其中有一段代码是 fetch('data.json') 加载同目录的 data.json 文件;

    chrome 直接打开这个 index.html (不使用 nginx 或其它 http server ),会加载失败:

    Fetch API cannot load file:/// URL scheme must be "http" or "https" for CORS
    

    改成 XMLHttpRequest 方式加载也是类似的错误;

    还有什么办法可以加载本地文件吗,客户不想部署 http server,希望在本地直接打开页面展示数据结果

    13 条回复    2020-09-03 18:05:15 +08:00
    johnnyNg
        1
    johnnyNg  
       2020-09-03 10:03:00 +08:00
    把 data.json 改成 data.js 吧,引入 js 文件
    cat
        2
    cat  
    OP
       2020-09-03 10:07:22 +08:00
    @johnnyNg 谢谢,但页面上有其它类型的文件需要动态加载,并且是由第三方插件加载的,无法这样搞,还有其它方法吗
    pinews
        3
    pinews  
       2020-09-03 10:09:40 +08:00
    html 可以默认加载图片和视频,可以运行 js 文件

    其他文件都必须用户亲自操作(即用户许可)才能运行。
    johnnyNg
        4
    johnnyNg  
       2020-09-03 10:14:10 +08:00
    @cat Electron 走起
    cat
        5
    cat  
    OP
       2020-09-03 10:18:47 +08:00
    @johnnyNg 😂 果然只能 electron 了吗
    cat
        6
    cat  
    OP
       2020-09-03 10:20:07 +08:00
    @pinews 需要加载的其它类型文件 本质上也是一串文本,我看看能不能一起搞到 js 里…
    Sapp
        7
    Sapp  
       2020-09-03 10:20:23 +08:00
    chrome 要是给你这个权限怎么保证安全? 这明显是不可能给你的权限啊,不然你瞎读客户文件上传。
    要么你让用户自己选择文件加载,然后你读取他选择的文件,要么 electron,什么权限都能自己搞。
    cat
        8
    cat  
    OP
       2020-09-03 10:29:35 +08:00
    @Sapp 以 file:// 协议打开的本地文件,和互联网上的网页不能相提并论。
    pinews
        9
    pinews  
       2020-09-03 10:45:31 +08:00
    @cat 别想了,道理是一样的,都需要许可,本地 js 文件之所以能运行,是这个行为得到了用户逻辑上的许可。
    phy25
        10
    phy25  
       2020-09-03 11:25:36 +08:00 via Android
    isDebug
        11
    isDebug  
       2020-09-03 11:26:19 +08:00
    你这是 mock 吗 直接用 js import 吧
    imn1
        12
    imn1  
       2020-09-03 12:12:22 +08:00
    本地的话也没必要 ajax,写入 html 文件里面就行了
    或者自己写个程序,内置 webkit,如 pyqt 做这个就几行代码而已
    miaowm5
        13
    miaowm5  
       2020-09-03 18:05:15 +08:00
    如果客户不想部署 http server 只是因为嫌麻烦,那直接写一个单文件无配置的静态文件服务器呢?

    比如我自己是偷偷往目录里扔了个 node.exe ,然后说不需要部署只需要运行一个 bat 就行,那个 bat 里实际上是调用 node.exe 在当前目录起了个静态服务器然后打开了 chrome……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1493 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:09 · PVG 01:09 · LAX 09:09 · JFK 12:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.