javascript - 在 Firefox OS 设备上通过 AJAX 执行脚本

标签 javascript jquery ajax firefox-os

我的问题是关于 Apps CSP https://developer.mozilla.org/en-US/Apps/CSP

这里说所有远程脚本、内联脚本、javascript URI 和其他安全问题都不会在 Firefox OS 应用程序上工作。

因此,我尝试下载我的应用程序(Flurry 和广告服务)所必需的脚本,但两者都无法在设备上运行。我调用电话的方式是使用 AJAX,这样我就可以避免这两个脚本都包含的远程和内联脚本。在模拟器中运行完美,但在设备上,广告从不显示,Flurry session 也从不启动。

这是我为 Flurry 进行 AJAX 调用的代码部分:

$.ajax({
            url: 'https://cdn.flurry.com/js/flurry.js',
            dataType: "script",
            xhrFields: {
                mozSystem: true
            },
            success: function(msg){
                console && console.log("Script de Flurry: luego de la descarga en AJAX "+msg);
                flurryLibrary = true;
                FlurryAgent.startSession("7ZFX9Z4CVT66KJBVP7CF");
            },
            error:function(object,status,errortxt){
                console && console.log("The script wasn't downloaded as text. The error:" +errortxt);
                flurryLibrary = false;
            },
            always: function(object,status,errortxt){
                console && console.log("The script may or may not be downloaded or executed. The error could be:" +errortxt);
            }
        });

在我的应用程序中,我使用 systemXHR 权限并使用此行调用其他网站:

request = new XMLHttpRequest({ mozSystem: true });

这与在 AJAX 调用中使用 xhrFields{mozSystem:true} 相同。

我相信这不是跨域问题,因为在我的应用程序的其余部分中,我调用了不在我的域中的 xml 文件,并且调用成功返回。

那么,我的问题是,Firefox OS 应用程序可以执行通过 AJAX 下载的脚本吗?有办法解决这个问题吗?

感谢您的宝贵时间。

PS:我忘了补充一点,我的应用程序是特权的,以防万一你问

最佳答案

我认为这是一项安全功能,对您的问题的简短回答是否定的。引用您链接到自己的 CSP 文档:

You cannot point a at a remote JavaScript file. This means that all JS files that you reference must be included in your app's package.

如果您从远程服务器使用 ajax 加载 JS 文件,则该 JS 文件不会包含在您的应用程序包中。您应该小心遵守 CSP 限制。在不完全遵守 CSP 的情况下进行开发时,有可能在模拟器甚至手机中让很多东西正常工作,但这并不意味着它就可以了。当您将来向任何可靠的市场(例如 Firefox Marketplace)提交您的应用程序时,将对其进行仔细审查以确保它不违反 CSP 限制。作为一般经验法则,我会说任何动态评估 JS 代码的尝试都将存在安全风险,并且很可能会被 CSP 法规禁止。

关于javascript - 在 Firefox OS 设备上通过 AJAX 执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20052670/

相关文章:

jquery - 无法使用 JQuery 在 Chrome 中加载 XML

jquery - JSON 数据未在 AJAX POST 请求中发送

jquery - toggleClass 后不同的 CSS 过渡

javascript - 相同数组不同结果

php - 从 php 调用 js 函数时出现问题

javascript - 水平边框渐变

javascript - JQuery 遍历每个 div id

javascript - Array .map() 返回 HTML [object Object]

javascript - 了解 ajax 在做什么

javascript - 使用ajax无需刷新页面即可显示数据库记录