在WKWebView中从特定域启用外部javascript

在WKWebView中从特定域启用外部javascript,javascript,ios,wkwebview,Javascript,Ios,Wkwebview,我在app Store上维护一个应用程序,它对终端用户免费,但通过广告(我们自己销售,而不是通过谷歌获得随机广告)为自己付费。广告显示在WKWebView中,该视图在我们自己的服务器上获取包含广告的网页。我们使用Restore Adserver统计浏览量和点击量 一个假定的广告商坚持他们能够跟踪广告活动效果本身的点击量(视图和点击量),这意味着网页需要从www.googletagservices.com加载javascript,但出于隐私和安全目的,WKWebView似乎不允许来自网页自身域以外

我在app Store上维护一个应用程序,它对终端用户免费,但通过广告(我们自己销售,而不是通过谷歌获得随机广告)为自己付费。广告显示在WKWebView中,该视图在我们自己的服务器上获取包含广告的网页。我们使用Restore Adserver统计浏览量和点击量

一个假定的广告商坚持他们能够跟踪广告活动效果本身的点击量(视图和点击量),这意味着网页需要从
www.googletagservices.com
加载javascript,但出于隐私和安全目的,WKWebView似乎不允许来自网页自身域以外的域的javascript。当打开广告页面的Web Inspector时,我收到错误消息说
阻止了一个带有原点的帧”https://ad.doubleclick.net“从访问具有原点的帧”https://www.ourdomain.com". 协议、域和端口必须匹配。
虽然不是
www.googletagservices.com
域,但我的理解是,这些消息反映了相同的基本问题

我已经阅读了WKWebView的文档,并搜索了允许特定域/javascript豁免的方法,以满足广告客户的需求,但迄今为止没有找到任何方法。我的初步结论是,没有办法做到这一点

我试过的东西到处都是,但总的来说,我试过了所有可能允许javascript运行的东西。奇怪的是,Android应用程序没有这个问题——奇怪的是,这种“同源策略”在不同浏览器中似乎非常标准

我已经看过了,但由于我们(遗憾地)没有控制谷歌的域名,这似乎是不可行的

据我所知,WKUserScript是用来运行你自己控制的脚本的——这显然不能说是来自谷歌的脚本

以下是WKWebView的配置:

lazy var webView: WKWebView = {

        let config = WKWebViewConfiguration()
        config.preferences.setValue(true, forKey: "developerExtrasEnabled") // This row was added while trying workarounds
        config.preferences.javaScriptEnabled = true  // This row was added while trying workarounds
        let someWebView = WKWebView(frame: self.view.frame, configuration: config)
        someWebView.scrollView.isScrollEnabled = false
        someWebView.navigationDelegate = self
        someWebView.translatesAutoresizingMaskIntoConstraints = false

        let footerURL = URL(string: "https://www.ourdomain.com/banners/ios/footer.php")!
        let request = URLRequest(url: footerURL)
        someWebView.load(request)
        return someWebView
    }()
我承认我对当前问题的理解相当肤浅,但我仍然想问社区:


是否有任何方法可以满足广告客户的要求,理想情况下不会影响安全性和用户隐私?

似乎您可以在服务器端收集统计数据,而不是使用客户端脚本。