【问题标题】:Adding custom headers on all browsers在所有浏览器上添加自定义标题
【发布时间】:2016-11-21 03:22:40
【问题描述】:

我正在开发一个应用程序,我想在 android 中向浏览器添加标题。它在谷歌浏览器上工作得很好。

但这不适用于其他可用的浏览器,如 Firefox、UC 浏览器、OperaMini、Dolphin

以下是我尝试过的代码。

Intent mIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(URL));
Bundle bundle = new Bundle();
bundle.putString(Constants.REQUEST_HEADER_TOKEN, "token");
bundle.putString(Constants.REQUEST_HEADER_AUTH, "Basic bfjdslfs");
mIntent.putExtra(Browser.EXTRA_HEADERS, bundle);
startActivity(mIntent);

任何帮助将不胜感激。在此先感谢。

【问题讨论】:

  • 除此之外你还尝试过什么...??请至少提及几个链接......还有在向其他浏览器添加标题时遇到的错误。
  • 你为什么不用网页视图....??
  • 没错,kiran 说的是对的……!!使用网络视图
  • @HarrySharma, WebView 通常是一个糟糕的解决方案,因为它因操作系统和制造商而异。移动浏览器比WebView好多了。

标签: android firefox android-intent browser custom-headers


【解决方案1】:

此解决方案绝对适用于移动 chrome 浏览器(其他人尚未测试)

 Intent mIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(URL));
    Bundle bundle = new Bundle();
    bundle.putString("Authorization", "Basic " + token);
    mIntent.putExtra(Browser.EXTRA_HEADERS, bundle);
    startActivity(mIntent);

但是,请注意可以在其他默认应用程序中打开的文件的链接。

就我而言,pdf 有问题 每个以 .pdf (http://lol.com/test.pdf) 结尾的链接都不是在网络浏览器中打开,而是在某些 pdf 阅读器中打开,然后 EXTRA_HEADERS 不会发送。

【讨论】:

    【解决方案2】:

    不要求浏览器关注 EXTRA_HEADERSREQUEST_HEADER_TOKEN 等额外内容。

    要么使用WebView,要么始终不添加标题。

    【讨论】:

    • @PragyaSingla:WebView 可以在使用WebViewClient 时处理服务器端重定向。由于您无法更改其他 Web 浏览器的行为,因此您需要更改方法。
    • 在网络视图中,有时重定向链接在重定向过程中会中断,无法识别链接是关闭还是打开。在这种情况下,网络视图停止处理。所以我必须使用网络浏览器。
    • @PragyaSingla:也许您应该针对您的WebView 问题提出单独的 Stack Overflow 问题寻求帮助。毕竟,有些Web 浏览器使用WebView。或者,更改您的 Web 服务器,使您不需要这些自定义标头。或者,不要使用 WebView 来执行 HTTPS 请求,而是使用其他东西(例如,HttpURLConnection、OkHttp3)。我再说一遍:因为你无法改变其他 Web 浏览器的行为,你需要改变你的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多