Android- EXTRA_HEADERS 未反映在更新的 Chrome 大于 83 的版本中
Android- EXTRA_HEADERS is not reflecting in updated Chrome version greater than 83
之前 EXTRA_HEADERS 传递给 customTabsIntent.intent.putExtra(Browser.EXTRA_HEADERS, headers),工作正常。 Chrome 更新到 83 后,它停止传递 header 数据。
public static void startCustomTab(String url, Context context) {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
builder.setShowTitle(true);
Bundle headers = new Bundle();
headers.putString(context.getString(R.string.type), "android");
headers.putString(context.getString(R.string.source), "app");
customTabsIntent.intent.putExtra(Browser.EXTRA_HEADERS, headers);
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
customTabsIntent.launchUrl(context, Uri.parse(url));
}
添加自定义 headers 由于存在漏洞而被删除。 CORS safe-listed request headers are still supported. You can read more about this change here: http://crbug.com/873178
我想详细说明一下已接受的答案。 Chrome 83 确实消除了添加自定义 headers 的可能性,但 Chrome 86 在某些严格条件下恢复了此功能。参见 https://developers.google.com/web/android/custom-tabs/headers. Just follow an example from https://github.com/GoogleChrome/android-browser-helper/tree/master/demos/custom-tabs-headers。
TD;DR - 您必须同时拥有应用程序和网站才能使其在应用程序和数字资产链接协议文件(网站地址 (...)/.well-known/assetlinks.json) 需要.
请务必严格按照教程和示例进行操作。就我而言,我偶然发现了一个细节 - CustomTabsIntent
Builder 需要 CustomTabsSession
object 设置。
可以在此处找到 Chromium 项目中引入更改的代码更改:https://chromium-review.googlesource.com/c/chromium/src/+/2311582
之前 EXTRA_HEADERS 传递给 customTabsIntent.intent.putExtra(Browser.EXTRA_HEADERS, headers),工作正常。 Chrome 更新到 83 后,它停止传递 header 数据。
public static void startCustomTab(String url, Context context) {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
builder.setShowTitle(true);
Bundle headers = new Bundle();
headers.putString(context.getString(R.string.type), "android");
headers.putString(context.getString(R.string.source), "app");
customTabsIntent.intent.putExtra(Browser.EXTRA_HEADERS, headers);
customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
customTabsIntent.launchUrl(context, Uri.parse(url));
}
添加自定义 headers 由于存在漏洞而被删除。 CORS safe-listed request headers are still supported. You can read more about this change here: http://crbug.com/873178
我想详细说明一下已接受的答案。 Chrome 83 确实消除了添加自定义 headers 的可能性,但 Chrome 86 在某些严格条件下恢复了此功能。参见 https://developers.google.com/web/android/custom-tabs/headers. Just follow an example from https://github.com/GoogleChrome/android-browser-helper/tree/master/demos/custom-tabs-headers。
TD;DR - 您必须同时拥有应用程序和网站才能使其在应用程序和数字资产链接协议文件(网站地址 (...)/.well-known/assetlinks.json) 需要.
请务必严格按照教程和示例进行操作。就我而言,我偶然发现了一个细节 - CustomTabsIntent
Builder 需要 CustomTabsSession
object 设置。
可以在此处找到 Chromium 项目中引入更改的代码更改:https://chromium-review.googlesource.com/c/chromium/src/+/2311582