我正在开发一个使用http://tabulator.info/来呈现数据表的 phonegap 应用程序。制表符的功能之一是它允许将表格内容导出为 excel 文件 (xlsx) 以供下载。该功能在独立网页/应用程序上运行良好,并分别在 Android/iPhone 上的 chrome/safari 浏览器上下载 xls 文件。
问题:当同一个 web 应用程序与 phonegap cordova 应用程序打包时,下载功能不起作用。似乎 Phonegap/Cordova 不允许打开数据:PDF 和 XLSX 的 url。应用程序 config.xml 已更新为所需的白名单插件和允许数据所需的条目:urls。
此外,html 文件顶部包含以下内容安全策略:
<meta http-equiv="Content-Security-Policy" content="
default-src * data:;
style-src * 'unsafe-inline';
script-src * 'unsafe-inline';
media-src * data:; img-src * data:;
" />
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个小的虚拟应用程序,试图打开一个示例数据:通过锚标记链接,但它根本不执行任何操作。调试器/控制台中也没有记录异常。
有没有人遇到过这种情况?有人想出解决方案了吗?
任何帮助是极大的赞赏。
谢谢你。
目前,我的 nginx 配置文件中有以下代理传递定义:
location /pass/ {
proxy_pass http://localhost:9999/pass/;
proxy_redirect off;
proxy_set_header Host $host;
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作 - /pass 请求被转发到在端口 9999 上运行的应用程序。
现在,我想做的是将端口转发部分动态化,如下所示:
location /pass/<input> {
{a $port variable here that is evaluated via a script (php?)}
proxy_pass http://localhost:$port/pass/;
proxy_redirect off;
proxy_set_header Host $host;
}
Run Code Online (Sandbox Code Playgroud)
对 /pass/ABCD1234 的请求应转发到端口 9898,对 /pass/ABCD5678 的请求应转发到端口 9797。
请注意,该流程是动态的 - 因此,从 ABCD1234 到 9898 的映射应该通过某种脚本(也许是 PHP?)进行,并且基于脚本的输出(端口),proxy_pass 应该将请求转发到该端口。
请在这方面提供帮助。
更新 :
我不想从 URI 输入中获取 proxy_pass 端口,而是想通过 cookie 来实现这一点。所以,这是更新后的代码块:
location /pass/ {
add_header X-debug-message $host always;
add_header X-debug-message $cookie_sdmport;
set …Run Code Online (Sandbox Code Playgroud)