Stripe 在 wkwebview 打开一个浏览器页面加载脚本
Stripe in wkwebview open a browser page loading script
由于 Apple 的要求,我们正在将我们的 APP 迁移到新的 wkweview。
其中一个应用程序正在使用 StripeJS sdk 以允许在应用程序中付款。当 APP 正在引导时出现问题,并且 stripe sdk 包含在以下代码中:
// Payment service is not initialized yet
$.ajax({
type: "GET",
cache: true,
url: "https://js.stripe.com/v3/",
dataType: "script",
error: function(XMLHttpRequest, textStatus, errorThrown) {
Logger.error("An error ocurred during SDK download");
def.reject();
},
success: function() {
Logger.debug("Stipe JDK downloaded correctly");
initialized = true;
def.resolve();
}
});
我们已经尝试在 index.html 中使用 '' head 标签或动态创建一个脚本标签并将其附加到正文:但没有人解决这个问题。
脚本包含测试
[Angular $http 方法]
$http({
method: "GET",
url: "https://js.stripe.com/v3/"
}).then(
function(res) {
angular.element("body").append("<script>" + res.data + "</script>");
}, function(err) {
def.reject();
});
[index.html]
<html>
<head>
<script type="text/javascript" src="https://js.stripe.com/v3/"></script>
...
问题
浏览器页面打开,APP留在后台;更具体地说,“METRICS_CONTROLLER”案例在第 767 行的开关中被捕获(参见 url < https://js.stripe.com/v3/ > 处的库)。
有谁知道为什么在打开浏览器页面时包含该脚本?
只是为了回答我的问题,我们发现了问题。
问题是 cordova 配置(文件 'config.xml')不允许导航 url 的权限。
更具体地说,我们需要在配置中添加以下行。文件
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
最后,我们的 CORS 权限定义是:
<access origin="*" />
<allow-intent href="sms:*" />
<allow-intent href="tel:*" />
<allow-intent href="geo:*" />
<allow-intent href="mailto:*" />
<allow-intent href="file://*/*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
'*'是因为APP可以触发外部资源,所以我们无法知道用户在APP中会打开哪个url。
希望这对@saperlipopette 有所帮助
西蒙
由于 Apple 的要求,我们正在将我们的 APP 迁移到新的 wkweview。
其中一个应用程序正在使用 StripeJS sdk 以允许在应用程序中付款。当 APP 正在引导时出现问题,并且 stripe sdk 包含在以下代码中:
// Payment service is not initialized yet
$.ajax({
type: "GET",
cache: true,
url: "https://js.stripe.com/v3/",
dataType: "script",
error: function(XMLHttpRequest, textStatus, errorThrown) {
Logger.error("An error ocurred during SDK download");
def.reject();
},
success: function() {
Logger.debug("Stipe JDK downloaded correctly");
initialized = true;
def.resolve();
}
});
我们已经尝试在 index.html 中使用 '' head 标签或动态创建一个脚本标签并将其附加到正文:但没有人解决这个问题。
脚本包含测试
[Angular $http 方法]
$http({
method: "GET",
url: "https://js.stripe.com/v3/"
}).then(
function(res) {
angular.element("body").append("<script>" + res.data + "</script>");
}, function(err) {
def.reject();
});
[index.html]
<html>
<head>
<script type="text/javascript" src="https://js.stripe.com/v3/"></script>
...
问题
浏览器页面打开,APP留在后台;更具体地说,“METRICS_CONTROLLER”案例在第 767 行的开关中被捕获(参见 url < https://js.stripe.com/v3/ > 处的库)。
有谁知道为什么在打开浏览器页面时包含该脚本?
只是为了回答我的问题,我们发现了问题。
问题是 cordova 配置(文件 'config.xml')不允许导航 url 的权限。 更具体地说,我们需要在配置中添加以下行。文件
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
最后,我们的 CORS 权限定义是:
<access origin="*" />
<allow-intent href="sms:*" />
<allow-intent href="tel:*" />
<allow-intent href="geo:*" />
<allow-intent href="mailto:*" />
<allow-intent href="file://*/*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
'*'是因为APP可以触发外部资源,所以我们无法知道用户在APP中会打开哪个url。
希望这对@saperlipopette 有所帮助 西蒙