Titanium:加载WebView时如何设置referer
Titanium: How to set referer when loading WebView
我目前使用这个
mywebview.setUrl(the_url);
加载 URL。
我可以改为在 http header 中包含引荐来源网址的方式加载它吗?
编辑:这样做的原因是 linked-to 网站应该能够看到流量来自哪里,即使 URL 加载到与包含的 webview 不同的 webview 中link。 (我使用多个 WebView 创建一个选项卡 UI。)
编辑:
xcode 等价物似乎是这样的,虽然我不确定这是否也将它加载到新的 webview 中:
似乎还无法为 WebView 定义自定义 headers。您可以看票TIMOB-17467查看更新。
看来您需要一个本机模块。
快速检查 iOS..
- Safari Dialog module不支持headers(class限制)。
- WKWebview module 不支持 headers(似乎是可能的)。
也许你可以扩展这些。
Android 似乎更容易实现,(但在 Titanium SDK 中仍然不可用),通过 extraHeaders
:阅读更多:https://whosebug.com/a/5342527
我查看了 Android Webview header (php getallheaders()
) 并且有 x-requested-with: com.app.id
因此,在您的页面中,您可以检查该值并至少知道它已被具有捆绑包标识符的应用程序访问过。否则,您可以将 get 参数附加到 url ?mobile
并计数。
我正在尝试向 Android SDK 添加补丁并添加 setHeader() 方法。 loadUrl() 调用位于:
https://github.com/appcelerator/titanium_mobile/blob/bc85170157d3bebc5de1d61a9fe6e34bce84a8c9/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java#L462
如果按照@tzmartin 改的话
extraHeaders.put("Referer", "http://www.referer.tld/login.html");
getWebView().loadUrl(finalUrl, extraHeaders);
那么它已经可以工作了,但是它是硬编码的。
我目前使用这个
mywebview.setUrl(the_url);
加载 URL。
我可以改为在 http header 中包含引荐来源网址的方式加载它吗?
编辑:这样做的原因是 linked-to 网站应该能够看到流量来自哪里,即使 URL 加载到与包含的 webview 不同的 webview 中link。 (我使用多个 WebView 创建一个选项卡 UI。)
编辑: xcode 等价物似乎是这样的,虽然我不确定这是否也将它加载到新的 webview 中:
似乎还无法为 WebView 定义自定义 headers。您可以看票TIMOB-17467查看更新。
看来您需要一个本机模块。
快速检查 iOS..
- Safari Dialog module不支持headers(class限制)。
- WKWebview module 不支持 headers(似乎是可能的)。
也许你可以扩展这些。
Android 似乎更容易实现,(但在 Titanium SDK 中仍然不可用),通过 extraHeaders
:阅读更多:https://whosebug.com/a/5342527
我查看了 Android Webview header (php getallheaders()
) 并且有 x-requested-with: com.app.id
因此,在您的页面中,您可以检查该值并至少知道它已被具有捆绑包标识符的应用程序访问过。否则,您可以将 get 参数附加到 url ?mobile
并计数。
我正在尝试向 Android SDK 添加补丁并添加 setHeader() 方法。 loadUrl() 调用位于: https://github.com/appcelerator/titanium_mobile/blob/bc85170157d3bebc5de1d61a9fe6e34bce84a8c9/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java#L462
如果按照@tzmartin 改的话
extraHeaders.put("Referer", "http://www.referer.tld/login.html");
getWebView().loadUrl(finalUrl, extraHeaders);
那么它已经可以工作了,但是它是硬编码的。