WKWebView 和 Amazon Affiliate 图片 src
WKWebView and Amazon Affiliate image src
我在我的网站中使用亚马逊附属图片 links,然后使用 Swift 中的 WKWebView 将其转换为应用程序。
如果我直接从 Safari 或任何其他浏览器访问网页,Amazon 附属公司 link 工作得很好。但是图像没有显示在使用 WKWebView 的应用程序中:而是显示一个小问号图标,当我单击小图标时,它会打开右侧的亚马逊 link.
这是我的 ViewController.swift:
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
// 1
let url = URL(string: "http://myurl/")!
webView.load(URLRequest(url: url))
// 2
let refresh = UIBarButtonItem(barButtonSystemItem: .refresh, target: webView, action: #selector(webView.reload))
toolbarItems = [refresh]
navigationController?.isToolbarHidden = false
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}
}
这是我在 HTML 中的亚马逊会员 link:
<a target="_blank" href="https://rads.whosebug.com/amzn/click/com/B00KEBYK88" rel="nofollow noreferrer"><img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=B00KEBYK88&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL160_&tag=questionrs-20" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=questionrs-20&l=am2&o=1&a=B00KEBYK88" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
注意它有一个 img 标签:
<img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=B00KEBYK88&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL160_&tag=questionrs-20" >
如果我将此 img 标签直接放在我的 HTML 中,图像仍然不会通过应用程序中的 WKWebView 显示(但如果我直接在任何浏览器中打开网站,则显示正常)
如果我在浏览器中打开图片 src,它会被转换为:
https://images-na.ssl-images-amazon.com/images/I/41ZIpVTW8-L._SL160_.jpg
而且,如果我把这个新的 URL 放在 src 中,WKWebView 可以显示它。
有没有办法让WKWebView显示原图URL?
您需要在 info.plist
的应用程序传输安全设置字典中添加 Allow Arbitrary Loads in Web Content = YES
和 Allow Arbitrary Loads = YES
我在我的网站中使用亚马逊附属图片 links,然后使用 Swift 中的 WKWebView 将其转换为应用程序。
如果我直接从 Safari 或任何其他浏览器访问网页,Amazon 附属公司 link 工作得很好。但是图像没有显示在使用 WKWebView 的应用程序中:而是显示一个小问号图标,当我单击小图标时,它会打开右侧的亚马逊 link.
这是我的 ViewController.swift:
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
// 1
let url = URL(string: "http://myurl/")!
webView.load(URLRequest(url: url))
// 2
let refresh = UIBarButtonItem(barButtonSystemItem: .refresh, target: webView, action: #selector(webView.reload))
toolbarItems = [refresh]
navigationController?.isToolbarHidden = false
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}
}
这是我在 HTML 中的亚马逊会员 link:
<a target="_blank" href="https://rads.whosebug.com/amzn/click/com/B00KEBYK88" rel="nofollow noreferrer"><img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=B00KEBYK88&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL160_&tag=questionrs-20" ></a><img src="https://ir-na.amazon-adsystem.com/e/ir?t=questionrs-20&l=am2&o=1&a=B00KEBYK88" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
注意它有一个 img 标签:
<img border="0" src="https://ws-na.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=US&ASIN=B00KEBYK88&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL160_&tag=questionrs-20" >
如果我将此 img 标签直接放在我的 HTML 中,图像仍然不会通过应用程序中的 WKWebView 显示(但如果我直接在任何浏览器中打开网站,则显示正常)
如果我在浏览器中打开图片 src,它会被转换为:
https://images-na.ssl-images-amazon.com/images/I/41ZIpVTW8-L._SL160_.jpg
而且,如果我把这个新的 URL 放在 src 中,WKWebView 可以显示它。
有没有办法让WKWebView显示原图URL?
您需要在 info.plist
Allow Arbitrary Loads in Web Content = YES
和 Allow Arbitrary Loads = YES