【问题标题】:How can I load a local json file?如何加载本地 json 文件?
【发布时间】:2012-06-01 09:45:22
【问题描述】:

有没有办法使用 about:config 配置 firefox 以允许本地文件访问(用于演示目的)?

具体使用 FF12,我需要能够对 json 数据进行本地文件访问。它在服务器上运行良好,但我想让这个演示更便携。

        $.ajax({
            url: "../_assets/levelschema.json",
            complete: function (data) {
                Levels = data.levels;
                //...
            },
            success: function (data) {                    
                // wont get called b/c files don't have 200 HTTP status
            },
            async: false
        });

我尝试将其设置为 not async=false,但出现“拒绝访问受限 URI”错误。这是一项安全功能。我真的需要演示离线工作,没有互联网访问,我希望使用它的人不必安装网络服务器。我也不想将我的所有数据都嵌入到 HTML 标记中,因为该数据可能会发生变化。

【问题讨论】:

    标签: json security firefox local-storage


    【解决方案1】:

    您可以在about:config 中翻转security.fileuri.strict_origin_policy 首选项。但这会带来一些安全漏洞;将您的 JSON 移动到 HTML 所在目录的子目录中是一个更好的主意。

    【讨论】:

      【解决方案2】:

      好的,只要您的数据文件位于原始 HTML 文件的下方,使用 AJAX 的 JSON 请求就可以正常工作。所以我试图升级到 _assets/ 目录。解决方法是将 _assets 移动到 HTML 当前目录中进行访问。

      在这种情况下,您可以将 AJAX 与 async=false 一起使用。

      【讨论】:

        【解决方案3】:

        如果 JSON 文件在您的本地计算机上,请像这样访问它:

        <script type="text/javascript" src="myFile.json"></script>

        您必须将该行添加到您的离线项目并在它上线时将其删除,但这是在没有任何服务器端帮助的情况下执行此操作的最佳方式。您还必须删除演示的 AJAX 代码,因为它无法在您的本地计算机上运行。

        【讨论】:

        • 是的,我说过我不想这样做,因为我在模式 json 中定义了可变数量的 json 文件。我不想手动嵌入每个 json,因为这使得 CMS 毫无用处 =)
        • 想一想,你为什么要用AJAX获取自己的JSON文件?当您上线时,它们会在与您的项目不同的服务器上吗?
        • 是的,展会和诸如此类的事情变得很复杂。通常必须有一个更加动态的在线版本的完全离线版本......
        • 哦,我明白了。除了使用一些服务器端代码之外,我想不出任何其他的帮助。也许您可以检查您是否在本地计算机上,如果是,则动态将脚本标签添加到 HTML,如下所示:if (location.href.indexOf("localhost") != -1) { /* add script tags */ } 然后在else 中,您将使用常规 AJAX 代码.只是一个想法。如果您想出一些可行的方法,请告诉我。
        猜你喜欢
        • 2017-05-08
        • 2011-11-12
        • 1970-01-01
        • 2012-09-12
        • 2012-05-16
        • 2011-04-23
        • 2020-04-29
        • 1970-01-01
        相关资源
        最近更新 更多